Created by Luca Saiu and last modified
Get this branch:
bzr branch lp://staging/ocamlbricks
Members of Marionnet drivers can upload to this branch. Log in for directions.

Branch merges

Related bugs

Related blueprints

Branch information

Marionnet drivers

Recent revisions

561. By Jean-Vincent Loddo

In module Channel, added tools (`reactive_image', `reactive_minion') simply derived from the fundamental ones (`map', `product', `cover') to show the ability of channels to program in a reactive style, remaining compliant with the OCaml garbage collection.

560. By Jean-Vincent Loddo

Whole library adapted to OCaml versions 4.04.2, 4.06.1, 4.07.1, 4.08.1, 4.09.1, and 4.10.0. On the other hand, we are forced to abandon versions older than 4.04.2 because of the standard module Ephemeron, appeared with version 4.03, which is now used too extensively to preserve backward compatibility.

559. By Jean-Vincent Loddo

Minor changes in several modules

558. By Jean-Vincent Loddo

Minor but several changes to render Ocamlbrics compatible with OCaml 4.07. Basically, the main solved problem concerns the separation between the types `bytes' and `string', because since OCaml 4.06, the two types are not anymore synonyms.

557. By Jean-Vincent Loddo

Added module Collector to manage message collection, i.e. to manage values put on the channel by several sources (threads) asynchronously. Several (priority) "maintainers" depose a value on the channel and, from time to time, a (non priority) "writer" flush the container. In case of conflict with a flusher, maintainers have time to put everything they want before the flusher can act.

556. By Jean-Vincent Loddo

Minor changes (modules' renaming) about algebraic channels

555. By Jean-Vincent Loddo

Created directory CHANNEL/ to group all sources related to algebraic channels. Currently, all files contained in CHANNEL/ have been moved from the directory CORTEX. This last directory is not far from being obsolete and useless.

554. By Jean-Vincent Loddo

Sixth satisfactory version (until the next) of algebraic channels, with support for ephemeral (not persistent) structures. Stabilizations and notifications are performed only for writers and maintainers. During the access protocol to a channel, if the channel contains a persistent structure (by default) and the internal resistance has not really changed we do nothing (no stabilization, neither notifications to super-structures). The same (micro-)optimization cannot be applied to ephemeral (not persistent) structure, because for this kind of structures we cannot easily detect changes provoked by the `update' function (the 3th and 4th arguments of the body are the same object). Finally the more accurate tool to access a channel has the following signature:
val access :
  ?level:int -> ?ephemeral:unit -> ?enter:('a -> bool) -> ?notify:int list -> ?update:('a -> 'a) -> ?leave:('a -> bool) ->
  'a t -> ('a FTCC.t -> 'a details -> 'a -> 'a -> 'b) -> (exn, 'b) Either.t

553. By Jean-Vincent Loddo

Fifth satisfactory version of algebraic channels, with tools to better control the non-determinism (+). Now, when a method is applied to a disjunction (many "files" stored in the "directory"), we are able to acquire again exactly the same structure acquired the first time, and continue the work on it (module Channel.Control).

552. By Jean-Vincent Loddo

Added Lazynel, the module of thread-safe deferred computations implemented as algebraic channels (to be composable). Also added the module TS_lazy of (T)hread-(S)afe deferred computations not implemented by algebraic channels but with simple mutexes. Hence, the latter cannot be composed neither may be the subject of a waiting method (as on the contrary is possible with Lazynel.wait).

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
This branch contains Public information 
Everyone can see this information.