Remi's RPM repository - Blog

  

Blog | Support | Repository | Wizard

vendredi 29 mars 2024

📝 DNF 5 and Modularity

In an enterprise distribution, such as RHEL, because of the very long life cycle (10 years or more), there is 2 opposite needs:

  • stability, which means keeping the same version for the whole life of the distribution (ex EL-7 still provides PHP 5.4)
  • new versions needed by new projects (ex: a lot of projects now require PHP 8)

So, this means we need to be able to distribute alternative versions in a safe way.

This of course also affects my repository, which has the goal to provide more alternative versions and extensions.

This is not a need for Fedora which has a very sort life cycle (6 months), so with no need for newer versions in a stable release.

1. The old time

Until EL-7, the main solution was to create 1 optional repository per version (ex: the RHWAS channel in EL-4).

This was not perfect, mostly working only for newer versions, raising conflicts because 2 versions were available in active repositories.

In EL-5 using different names was tried (e.g. php version 5.1 and php53 for version 5.3), this was a real nightmare, and this has been abandoned.

2. Software Collections

A nice idea appears in EL-6 and EL-7 to provide alternative versions in a separated RPM namespace, installed in a separated tree (/opt), allowing the installation of various versions simultaneously.

Mostly because of some design faults, the community rejected this and the project was abandoned in EL-8 (excepted for newer GCC, in devtoolset).

As initial design issues were fixed, I really appreciate SCL and still use them, and provides them in my repository, see My PHP development Workstation, mostly because I like being able to install various versions simultaneously.

3. Modularity

EL-8 introduced modularity, a new way to manage alternative versions in optional streams. When a stream is disabled its packages are ignored by dnf, when it is enabled its packages are preferred. This works very well for both newer and older versions.

3.1. Everything is module

In EL-8 the idea was to provide everything as modules. This was probably a terrible mistake that caused the community to reject it again.

Indeed, especially for libraries this probably doesn't make sense. This also creates a complex dependency tree, and a very complex build system (MBS).

3.2. Module only for alternatives

In EL-9 everything was greatly simplified. The base system works without modules that are only used for alternative versions (ex: PHP 8.0 by default, but 8.1 and 8.2 are available as modules).

This is probably how modularity should have been used from the beginning. And this works really smoothly. Also, MBS is not really required in this simple scheme, with a simple build configuration being enough.

But it was too late, and the community (mostly the Fedora one) had already killed it.

4. DNF version 5

This is the successor of DNF version 4 which introduces modules. But, as Fedora chose to stop using modules, the needed features are not implemented.

For now, dnf5 only supports enabling/disabling streams, but this is far from usable, and perhaps everything related to modularity will be dropped in the final version.

4.1. Fedora 40

In the upcoming Fedora 40, dnf is still version 4 by default, and dnf5 is also available for test.

Module management still works, despite a small regression which has a workaround.

4.2. Fedora 41

In the future Fedora 41, dnf version 5 should become the default, probably without modularity.

5. My repository

I plan to continue to provide modules for Fedora 40 and probably EL-10, with dnf 4.

I need to think about later versions, having to switch back to the old way (1 repo per version) makes me terribly sad and gives me nightmares.

I've read a proposal to switch back to provide alternative versions under a different namespace. Which seems like switching 10 years back, with a broken solution.

6. Conclusion

Of course, I dream of seeing Modularity support maintained in dnf 5 ;)

I'm disappointed with the bad Fedora community feedback on solutions proposed to solve Enterprise-only needs.

And what a waste of developer energy on these features (SCL and Modularity)

🎲 PHP version 8.2.18RC1 and 8.3.5RC1

Release Candidate versions are available in the testing repository for Fedora and Enterprise Linux (RHEL / CentOS / Alma / Rocky and other clones) to allow more people to test them. They are available as Software Collections, for a parallel installation, the perfect solution for such tests, and also as base packages.

RPMs of PHP version 8.3.5RC1 are available

  • as base packages
    • in the remi-modular-test for Fedora 38-40 and Enterprise Linux ≥ 8
    • in the remi-php83-test repository for Enterprise Linux 7
  • as SCL in remi-test repository

RPMs of PHP version 8.2.18RC1 are available

  • as base packages
    • in the remi-modular-test for Fedora 38-40 and Enterprise Linux ≥ 8
    • in the remi-php82-test repository for Enterprise Linux 7
  • as SCL in remi-test repository

emblem-notice-24.png The Fedora 39, 40, EL-8 and EL-9 packages (modules and SCL) are available for x86_64 and aarch64.

Lire la suite...

vendredi 15 mars 2024

⚙️ PHP version 8.2.17 and 8.3.4

RPMs of PHP version 8.3.4 are available in the remi-modular repository for Fedora ≥ 37 and Enterprise Linux ≥ 8 (RHEL, Alma, CentOS, Rocky...) and in the remi-php83 repository for EL 7.

RPMs of PHP version 8.2.17 are available in the remi-modular repository for Fedora ≥ 37 and Enterprise Linux ≥ 8 (RHEL, Alma, CentOS, Rocky...) and in the remi-php82 repository for EL 7.

emblem-notice-24.png The Fedora 39, 40, EL-8 and EL-9 packages (modules and SCL) are available for x86_64 and aarch64.

emblem-notice-24.pngThere is no security fix this month, so no update for version 8.1.27.

emblem-important-2-24.pngPHP version 8.0 has reached its end of life and is no longer maintained by the PHP project.

These versions are also available as Software Collections in the remi-safe repository.

Lire la suite...

vendredi 1 mars 2024

🎲 PHP version 8.2.17RC2 and 8.3.4RC1

Release Candidate versions are available in the testing repository for Fedora and Enterprise Linux (RHEL / CentOS / Alma / Rocky and other clones) to allow more people to test them. They are available as Software Collections, for a parallel installation, the perfect solution for such tests, and also as base packages.

RPMs of PHP version 8.3.4RC1 are available

  • as base packages
    • in the remi-modular-test for Fedora 38-40 and Enterprise Linux ≥ 8
    • in the remi-php83-test repository for Enterprise Linux 7
  • as SCL in remi-test repository

RPMs of PHP version 8.2.17RC2 are available

  • as base packages
    • in the remi-modular-test for Fedora 38-40 and Enterprise Linux ≥ 8
    • in the remi-php82-test repository for Enterprise Linux 7
  • as SCL in remi-test repository

emblem-notice-24.png The Fedora 39, 40, EL-8 and EL-9 packages (modules and SCL) are available for x86_64 and aarch64.

Lire la suite...

vendredi 16 février 2024

⚙️ PHP version 8.2.16 and 8.3.3

RPMs of PHP version 8.3.3 are available in the remi-modular repository for Fedora ≥ 37 and Enterprise Linux ≥ 8 (RHEL, Alma, CentOS, Rocky...) and in the remi-php83 repository for EL 7.

RPMs of PHP version 8.2.16 are available in the remi-modular repository for Fedora ≥ 37 and Enterprise Linux ≥ 8 (RHEL, Alma, CentOS, Rocky...) and in the remi-php82 repository for EL 7.

emblem-notice-24.png The Fedora 39, 40, EL-8 and EL-9 packages (modules and SCL) are available for x86_64 and aarch64.

emblem-notice-24.pngThere is no security fix this month, so no update for version 8.1.27.

emblem-important-2-24.pngPHP version 8.0 has reached its end of life and is no longer maintained by the PHP project.

These versions are also available as Software Collections in the remi-safe repository.

Lire la suite...

lundi 5 février 2024

💎 PHPUnit 11

RPM of PHPUnit version 11 are available in remi repository for Fedora ≥ 38 and for Enterprise Linux (CentOS, RHEL, Alma, Rocky...).

Lire la suite...

vendredi 2 février 2024

🎲 PHP version 8.2.16RC1 and 8.3.3RC1

Release Candidate versions are available in the testing repository for Fedora and Enterprise Linux (RHEL / CentOS / Alma / Rocky and other clones) to allow more people to test them. They are available as Software Collections, for a parallel installation, the perfect solution for such tests, and also as base packages.

RPMs of PHP version 8.3.3RC1 are available

  • as base packages
    • in the remi-modular-test for Fedora 37-39 and Enterprise Linux ≥ 8
    • in the remi-php83-test repository for Enterprise Linux 7
  • as SCL in remi-test repository

RPMs of PHP version 8.2.16RC1 are available

  • as base packages
    • in the remi-modular-test for Fedora 37-39 and Enterprise Linux ≥ 8
    • in the remi-php82-test repository for Enterprise Linux 7
  • as SCL in remi-test repository

emblem-notice-24.png The Fedora 39EL-8 and EL-9 packages (modules and SCL) are available for x86_64 and aarch64.

Lire la suite...

jeudi 18 janvier 2024

⚙️ PHP version 8.2.15 and 8.3.2

RPMs of PHP version 8.3.2 are available in the remi-modular repository for Fedora ≥ 37 and Enterprise Linux ≥ 8 (RHEL, Alma, CentOS, Rocky...) and in the remi-php83 repository for EL 7.

RPMs of PHP version 8.2.15 are available in the remi-modular repository for Fedora ≥ 37 and Enterprise Linux ≥ 8 (RHEL, Alma, CentOS, Rocky...) and in the remi-php82 repository for EL 7.

emblem-notice-24.png The Fedora 39, EL-8 and EL-9 packages (modules and SCL) are available for x86_64 and aarch64.

emblem-notice-24.pngThere is no security fix this month, so no update for version 8.1.27.

emblem-important-2-24.pngPHP version 8.0 has reached its end of life and is no longer maintained by the PHP project.

These versions are also available as Software Collections in the remi-safe repository.

Lire la suite...

jeudi 4 janvier 2024

🎲 PHP version 8.2.15RC1 and 8.3.2RC1

Release Candidate versions are available in the testing repository for Fedora and Enterprise Linux (RHEL / CentOS / Alma / Rocky and other clones) to allow more people to test them. They are available as Software Collections, for a parallel installation, the perfect solution for such tests, and also as base packages.

RPMs of PHP version 8.3.2RC3 are available

  • as base packages
    • in the remi-modular-test for Fedora 37-39 and Enterprise Linux ≥ 8
    • in the remi-php83-test repository for Enterprise Linux 7
  • as SCL in remi-test repository

RPMs of PHP version 8.2.15RC1 are available

  • as base packages
    • in the remi-modular-test for Fedora 37-39 and Enterprise Linux ≥ 8
    • in the remi-php82-test repository for Enterprise Linux 7
  • as SCL in remi-test repository

emblem-notice-24.png The Fedora 39EL-8 and EL-9 packages (modules and SCL) are available for x86_64 and aarch64.

Lire la suite...

vendredi 22 décembre 2023

PHP version 8.1.27, 8.2.14 and 8.3.1

RPMs of PHP version 8.3.1 are available in the remi-modular repository for Fedora ≥ 37 and Enterprise Linux ≥ 8 (RHEL, Alma, CentOS, Rocky...) and in the remi-php83 repository for EL 7.

RPMs of PHP version 8.2.14 are available in the remi-modular repository for Fedora ≥ 37 and Enterprise Linux ≥ 8 (RHEL, Alma, CentOS, Rocky...) and in the remi-php82 repository for EL 7.

RPMs of PHP version 8.1.27 are available in the remi-modular repository for Fedora ≥ 37 and Enterprise Linux ≥ 8 (RHEL, Alma, CentOS, Rocky...) and in the remi-php81 repository for EL 7.

emblem-notice-24.png The Fedora 39, EL-8 and EL-9 packages (modules and SCL) are available for x86_64 and aarch64.

emblem-important-2-24.pngPHP version 8.0 has reached its end of life and is no longer maintained by the PHP project.

These versions are also available as Software Collections in the remi-safe repository.

Lire la suite...

vendredi 8 décembre 2023

PHP version 8.1.27RC1, 8.2.14RC1 and 8.3.1RC3

Release Candidate versions are available in the testing repository for Fedora and Enterprise Linux (RHEL / CentOS / Alma / Rocky and other clones) to allow more people to test them. They are available as Software Collections, for a parallel installation, the perfect solution for such tests, and also as base packages.

RPMs of PHP version 8.3.1RC3 are available

  • as base packages
    • in the remi-php83-test repository for Enterprise Linux 7
    • in the remi-modular-test for Fedora 37-39 and Enterprise Linux ≥ 8
  • as SCL in remi-test repository

RPMs of PHP version 8.2.14RC1 are available

  • as base packages
    • in the remi-php82-test repository for Enterprise Linux 7
    • in the remi-modular-test for Fedora 37-39 and Enterprise Linux ≥ 8
  • as SCL in remi-test repository

RPMs of PHP version 8.1.27RC1 are available

  • as base packages
    • in the remi-php81-test repository for Enterprise Linux 7
    • in the remi-modular-test for Fedora 37-39 and Enterprise Linux ≥ 8
  • as SCL in remi-test repository

emblem-notice-24.png The Fedora 39EL-8 and EL-9 packages (modules and SCL) are available for x86_64 and aarch64.

Lire la suite...

lundi 27 novembre 2023

🪦 PHP 8.0 is retired

One year after PHP 7.4, and as announced, PHP version 8.0.30 was the last official release of PHP 8.0

To keep a secure installation, the upgrade to a maintained version is strongly recommended:

  • PHP 8.1 has security only support and will be maintained until November 2024.
  • PHP 8.2 has active support and will be maintained until December 2024 (2025 for security).
  • PHP 8.3 has active support and will be maintained until November 2025 (2026 for security).

Read :

However, given the very important number of downloads by the users of my repository the version is still available in remi repository for Enterprise Linux (RHEL, CentOS, Alma, Rocky...) and Fedora and will include the latest security fixes.

Warning : this is a best effort action, depending on my spare time, without any warranty, only to give users more time to migrate. This can only be temporary, and upgrade must be the priority.

You can also watch the sources repository on github.

vendredi 24 novembre 2023

PHP version 8.1.26 and 8.2.13

RPMs of PHP version 8.2.13 are available in the remi-modular repository for Fedora ≥ 37 and Enterprise Linux ≥ 8 (RHEL, Alma, CentOS, Rocky...) and in the remi-php82 repository for EL 7.

RPMs of PHP version 8.1.26 are available in the remi-modular repository for Fedora ≥ 37 and Enterprise Linux ≥ 8 (RHEL, Alma, CentOS, Rocky...) and in the remi-php81 repository for EL 7.

emblem-notice-24.png The Fedora 39, EL-8 and EL-9 packages (modules and SCL) are available for x86_64 and aarch64.

emblem-notice-24.pngThere is no security fix this month, so no update for version 8.0.30.

emblem-important-2-24.pngPHP version 7.4 has reached its end of life and is no longer maintained by the PHP project.

These versions are also available as Software Collections in the remi-safe repository.

Lire la suite...

jeudi 23 novembre 2023

PHP version 8.3.0 is released!

RC6 was GOLD, so version 8.3.0 GA is just released, at planned date.

A great thanks to Eric Mann, Jakub Zelenka, and Pierrick Charron our Release Managers,  to all developers who have contributed to this new long awaiting version of PHP, and thanks to all testers of the RC versions who have allowed us to deliver a good quality version.

RPM are available in the php:remi-8.3 module for Fedora and Enterprise Linux 8 and as Software Collection in the remi-safe repository.

RPM are also available in the remi-php83 repository for  Enterprise Linux 7 (RHEL, CentOS, Alma, Rocky...).

Lire la suite...

jeudi 16 novembre 2023

ℹ️ New Computer and x86_64 builder for 2024, 2025...

My new computer is operational :

  • Gigabyte B760 AORUS Elite AX
  • Intel(R) Core(TM) i9-13900K CPU
  • Memory: 2x32GiB DDR5
  • NVMe disk of 2TB

Retrieved from my previous computer:

  • Corsair Graphite series 760T box
  • WaterCooling
  • SSD disks, 180GB and 480GB
  • SATA disk of 4TB

This computer is now my main development workstation and also my x86_64 builder.

First test, boot time < 5", PHP 8.3 build takes 20" instead of 55". Nice.

CPU Benchmark shows tripling of results, see i9-9900K vs i9-13900K

Another comparison, building grpc extension RPM, with the old i9-9900K

  • 4'12" for a single build using -j16
  • 3'29" average for 2 builds using -j8
  • 3'25" average for 3 builds using -j5

With the new i9-13900K

  • 2'20" for a single build using -j32
  • 1'20" average for 2 builds using -j16
  • 1'05" average for 3 builds using -j10

I plan to extend it quickly:

  • +64GiB memory

Thanks to all who want to participate, see the Merci/Thanks page.

Of course, my previous machine, from 2019, will be re-used

jeudi 9 novembre 2023

PHP version 8.1.26RC1 and 8.2.13RC1

Release Candidate versions are available in the testing repository for Fedora and Enterprise Linux (RHEL / CentOS / Alma / Rocky and other clones) to allow more people to test them. They are available as Software Collections, for a parallel installation, the perfect solution for such tests, and also as base packages.

RPMs of PHP version 8.2.13RC1 are available

  • as base packages
    • in the remi-php82-test repository for Enterprise Linux 7
    • in the remi-modular-test for Fedora 37-39 and Enterprise Linux ≥ 8
  • as SCL in remi-test repository

RPMs of PHP version 8.1.26RC1 are available

  • as base packages
    • in the remi-php81-test repository for Enterprise Linux 7
    • in the remi-modular-test for Fedora 37-39 and Enterprise Linux ≥ 8
  • as SCL in remi-test repository

emblem-notice-24.png The Fedora 39EL-8 and EL-9 packages (modules and SCL) are available for x86_64 and aarch64.

Lire la suite...

vendredi 27 octobre 2023

PHP version 8.1.25 and 8.2.12

RPMs of PHP version 8.2.12 are available in the remi-modular repository for Fedora ≥ 37 and Enterprise Linux ≥ 8 (RHEL, Alma, CentOS, Rocky...) and in the remi-php82 repository for EL 7.

RPMs of PHP version 8.1.25 are available in the remi-modular repository for Fedora ≥ 37 and Enterprise Linux ≥ 8 (RHEL, Alma, CentOS, Rocky...) and in the remi-php81 repository for EL 7.

emblem-notice-24.png The Fedora 39, EL-8 and EL-9 packages (modules and SCL) are available for x86_64 and aarch64.

emblem-notice-24.pngThere is no security fix this month, so no update for version 8.0.30.

emblem-important-2-24.pngPHP version 7.4 has reached its end of life and is no longer maintained by the PHP project.

These versions are also available as Software Collections in the remi-safe repository.

Lire la suite...

vendredi 13 octobre 2023

PHP version 8.1.25RC1 and 8.2.12RC1

Release Candidate versions are available in the testing repository for Fedora and Enterprise Linux (RHEL / CentOS / Alma / Rocky and other clones) to allow more people to test them. They are available as Software Collections, for a parallel installation, the perfect solution for such tests, and also as base packages.

RPMs of PHP version 8.2.12RC1 are available

  • as base packages
    • in the remi-php82-test repository for Enterprise Linux 7
    • in the remi-modular-test for Fedora 37-39 and Enterprise Linux ≥ 8
  • as SCL in remi-test repository

RPMs of PHP version 8.1.25RC1 are available

  • as base packages
    • in the remi-php81-test repository for Enterprise Linux 7
    • in the remi-modular-test for Fedora 37-39 and Enterprise Linux ≥ 8
  • as SCL in remi-test repository

emblem-notice-24.png The Fedora 39EL-8 and EL-9 packages (modules and SCL) are available for x86_64 and aarch64.

Lire la suite...

vendredi 29 septembre 2023

PHP version 8.1.24 and 8.2.11

RPMs of PHP version 8.2.11 are available in remi-modular repository for Fedora ≥ 37 and Enterprise Linux ≥ 8 (RHEL, Alma, CentOS, Rocky...) and in remi-php82 repository for EL 7.

RPMs of PHP version 8.1.24 are available in remi-modular repository for Fedora ≥ 37 and Enterprise Linux ≥ 8 (RHEL, Alma, CentOS, Rocky...) and in remi-php81 repository for EL 7.

emblem-notice-24.png The Fedora 39, EL-8 and EL-9 packages (modules and SCL) are available for x86_64 and aarch64.

emblem-notice-24.pngNo security fix this month, so no update for version 8.0.30.

emblem-important-2-24.pngPHP version 7.4 have reached its end of life and is no longer maintained by the PHP project.

These versions are also available as Software Collections in the remi-safe repository.

Lire la suite...

vendredi 15 septembre 2023

ℹ️ New ARM builder for 2023, 2024... from ETES GmbH

Architecture

ARM 64-bit is a RISC family processor.

As an old Unix user (on 68000, PA-RISC, PowerPC...) I'm a big fan of these architectures and a bit sad by the CISC (Intel/AMD) domination.

But the wheel is turning. ARM can be fast, cheap, and use less energy. Remember they are used to power your smartphone.

Chicken or egg

Classic dilema.

For a few years, some users have started asking about aarch64 builds. But as there are few users, there are few available systems and few available software. Having more users, software or systems will allow others to grow (and price to decrease).

Raspberry Pi was a small, low-cost solution, but unsuitable for a serious builder.  Other professional solutions were too expensive for a free project.

Last year I set up an aarch64 VM (emulated on x86_64) and started producing packages.

Because this solution was terribly slow (by 50, so minutes became hours), I had to reduce the target. So only a minimal set of packages and only for EL-9, which is very frustrating for me and for the repository users.

Sponsoring

A few months ago, while I was thinking about a small fundraising for a builder, Robert Scheck contacted me on behalf of ETES GmbH to find a way to thank me, support my work, and increase my motivation. We agree on the goal of an ARM server to create a RPM builder.

And this is now a reality: I have an ARM builder, see ETES sponsert ARM-Buildsystem für Remi's RPM repository (in German with English translation).

Even if I'm used to receive Paypal donations from the repository user (for hosting budget and builder), lot of support by mirror providers, and some thanks messages such testimonial of faith is really very appreciated in a world where too many users confuse free and gratis.

The beast

  • 2.2 GHz 64-core Ampere Altra processor (based on Neoverse N1)
  • 64 GB DDR4 RAM
  • 512 GB NVMe M.2 SSD
  • two boards from ADLINK Technology

Benchmark

A simple CPU benchmark says it has the same note as my (now old) x86_64 builder.

After a quick (and very simple) installation of RHEL 9.2 for aarch64 (using a free developer subscription), and the setup of my build environment, I  was able to run some comparisons and optimizations of builds.

1. a QT application

I run a build of qelectrotech on both builder.

The build takes 4' on x86_64 and 6' on aarch64. Despite this being a quite big project, it doesn't have the benefit of multiple-core parallelism.

For memory, a RPM build has a lot of steps which are not parallelized (chroot installation, link, archive...)

So for other tests, I will build PHP extensions that I usually build various time for various targets (distributions, PHP versions)

2. A small PHP extension

I run a set of builds of the ZIP extension, a small project (2 C files) which is quite common.

On x86_64

  • 24" for a single build using -j16
  • 15" average for 2 builds using -j8
  • 12" average for 3 builds using -j5

On aarch64

  • 29" for a single build using -j64
  • 15" average for 2 builds using -j32
  • 12" average for 3 builds using -j22

As this is a very small project, again no benefit from the number of cores, but same time for both builders.

3. A big PHP extension in C

I run a set of builds of GRPC extension, among the biggest ones (~2800 source files)

On x86_64

  • 4'12" for a single build using -j16
  • 3'29" average for 2 builds using -j8
  • 3'25" average for 3 builds using -j5

On aarch64

  • 2'34" for a single build using -j64
  • 2'21" average for 2 builds using -j32
  • 2'10" average for 3 builds using -j22

Here the number of cores gives a real benefit, as the aarch64 is even faster than the x86_64 one.

4. Another big PHP extension in Rust

I run a set of builds of datadog_trace extension, a terrible project in Rust using 400MB of sources

On x86_64

  • 2'38" for a single build using -j16
  • 1'30" average for 2 builds using -j8
  • 1'12" average for 3 builds using -j5

On aarch64

  • 4'44" for a single build using -j64
  • 2'55" average for 2 builds using -j32
  • 1'38" average for 3 builds using -j22

Strangely, x86_64 is slightly faster, not real difference.

5. Conclusion

This set of tests confirms that whatever the number of available cores, it is better to run various builds simultaneously. 3 or 4 seems the good choice for me as more will require more memory (chroot are stored in a 40GB tmpfs).

This new aarch64 is really an awesome builder! It will give me much more resources to build more packages. For example, I was able to rebuild the full Software Collections of PHP 7.4 to 8.3 for EL-9 (~150 extensions, more than 1000 built RPMs) in about 10 hours.

New goals

So aarch64 is now considered a primary arch for my repository

  • x86_64 and aarch64 packages are built simultaneously
  • modules and SCLs are available
  • same set of packages
  • testing packages

For now only for Enterprise Linux 9, but other distributions soon (probably EL-8, perhaps Fedora 39)

Thanks

I want to heartily thank ETES GmbH for its public support of my work and Robert Scheck for his time on this project.

- page 3 de 126 -