dkalinichenko-js · GitHub

@dkalinichenko-js

marked this pull request as draft

September 3, 2024 16:07

@avsm

avsm and others added 25 commits

September 5, 2024 09:07
This introduces the flambda2 in-development variant, along with
the various base packages required to compile it. These are secondary
packages for dune/menhir (required to bootstrap the development version
of the forked compiler), and also a new base-flambda2 package to
The only variation to package selection should be that the new
ocaml-secondary-compiler could be selected by existing ocamlfind-secondary
packages, but it should be fine as it is just a newer version of
the bootstrap OCaml used to build the ocamlfind binaries.
…b/ocaml/compiler-libs/META
…les/lib/ocaml/compiler-libs/META
menhir-secondary must be constrained (check in the build) but Dune
should always remain upgradable.
CHANGES:
- Major additions, changes, bug fixes, improvements, and restructuring
  (@polytypic, @c-cube)
  - Additions:
    - Minimalistic Cohttp implementation
    - Implicitly propagated `Flock` of fibers for structured concurrency
    - Option to terminate `Bundle` and `Flock` on return
    - `Event` abstraction
    - Synchronization and communication primitives:
      - Incremental variable or `Ivar`
      - Countdown `Latch`
      - `Semaphore`
      - `Stream` of events
    - Multi-producer, multi-consumer lock-free queue optimized for schedulers
    - Multithreaded (work-stealing) FIFO scheduler
    - Support `quota` for FIFO based schedulers
    - Transactional interface for atomically completing multiple `Computation`s
  - Changes:
    - Redesigned resource management based on `('r -> 'a) -> 'a` functions
    - Redesigned `spawn` interface allowing `FLS` entries to be populated before
      spawn
    - Introduced concept of fatal errors, which must terminate the scheduler or
      the whole program
    - Simplified `FLS` interface
  - Improvements:
    - Signficantly reduced per fiber memory usage of various sample schedulers
  - Picos has now been split into multiple packages and libraries:
    - pkg: `picos`
      - lib: `picos`
      - lib: `picos.domain`
      - lib: `picos.thread`
    - pkg: `picos_aux`
      - lib: `picos_aux.htbl`
      - lib: `picos_aux.mpmcq`
      - lib: `picos_aux.mpscq`
      - lib: `picos_aux.rc`
    - pkg: `picos_lwt`
      - lib: `picos_lwt`
      - lib: `picos_lwt.unix`
    - pkg: `picos_meta` (integration tests)
    - pkg: `picos_mux`
      - lib: `picos_mux.fifo`
      - lib: `picos_mux.multififo`
      - lib: `picos_mux.random`
      - lib: `picos_mux.thread`
    - pkg: `picos_std`
      - lib: `picos_std.event`
      - lib: `picos_std.finally`
      - lib: `picos_std.structured`
      - lib: `picos_std.sync`
    - pkg: `picos_io`
      - lib: `picos_io`
      - lib: `picos_io.fd`
      - lib: `picos_io.select`
    - pkg: `picos_io_cohttp`
      - lib: `picos_io_cohttp`
This is just for simplicity, since we could also introduce a
ocamlfind-secondary dependency here, but this package really will
not be used much on such old base compilers.
Add synopsis for base-flambda2

@avsm

@avsm

avsm marked this pull request as ready for review

September 5, 2024 12:18

avsm

avsm approved these changes Sep 5, 2024

@avsm

Read the original on github.com ↗