Skip to content

Releases: robur-coop/miou

0.3.0

22 Aug 08:05
Compare
Choose a tag to compare

CHANGES:

  • Set the internal pipe used to interrupt a domain to a non-blocking mode and
    remove the usage of an atomic which protect how we fill the pipe
    (@haesbaert, @dinosaure, #28)
  • Expose option to reuse addr/port when we Miou_unix.bind_and_listen
    (@ada2k, @dinosaure, #27)
  • Protect an illegal access to the orphan from a possibly parallel task which
    does not own the orphan value
    (@poytypic, @dinosaure, #31, #32)
  • Be able to pin a specific domain when we want to launch a parallel task
    (@dinosaure, #34)
  • Expose the Miou.Backoff module which can be useful for users
    (@dinosaure, #35)
  • Fix or improve (from the maintainance point-of-view) the Miou.Queue module
    and some internal parts of Miou about the usage of atomics
    (@dinosaure, @polytypic, #36, #33)
  • Prefer to require a finaliser function for the events value and actually
    close the internal Unix.pipe used to interrupt domain than to use
    Gc.finaliser and possibly leak file-descriptors
    (spotted by @hannesm, @dinosaure, #37)

0.2.0

04 Jun 14:44
Compare
Choose a tag to compare

CHANGES:

  • Don't try to abusively fill the pipe to interrupt a domain

    Interrupting a domain involves writing to a pipe to interrupt the select(2)
    if it is running. The pipe has a limited memory, depending on the system, and
    if you ask to interrupt a domain too much, you end up blocking the write.
    This patch prevents writing to the pipe if it has not yet been read.

    (@dinosaure, #46)

  • Expose the Sequence module
    (@dinosaure, #47)

  • Be able to add a hook (effect free) into the scheduler

    It is possible to add a hook to the scheduler. If the user wants to execute a
    function to a domain each time the domain is busy with a task, they can do so.
    However, the effects are not managed in the passed function.

    (@dinosaure, #48)

  • Add Miou.Lazy, a domain-safe Lazy module like Stdlib.Lazy
    (@dinosaure, initially implemented by @polytypic, #49)

  • Raise an exception if the user uses syscalls (from Miou_unix) and Miou.run
    instead of Miou_unix.run

    If a user uses a suspend function offered by Miou_unix but does not use
    Miou_unix.run, the programme may block indefinitely. This patch prevents
    such an error by raising an exception if we want to add a suspension point and
    we haven't specified how to handle it (if we use Miou.run instead of
    Miou_unix.run).

    (@dinosaure, reported by @kit-ty-kate, #51)

  • Rename Miou.set_signal to Miou.sys_signal
    (@dinosaure, #50)

  • Improve Miou_unix.{read,write}
    (@kit-ty-kate, @dinosaure, #52, 2f552a6, #54)

  • Fix an issue related to the dom0 and pending tasks locked by mutexes

    Tasks may have been transmitted to dom0 while it was executing a task and
    before the select(2). This patch resynchronises the pending tasks in dom0's
    TODO-list before making the select(2): specifically to find out whether the
    select(2) can block indefinitely or not. This patch also cleans up the old
    states of the tables used by Miou_unix if it is used on an ongoing basis (as
    in the case of tests).

    (@dinosaure, #53)

  • Add Miou.Domain.available
    (@dinosaure, #53)

  • Fix a race condition (observed with TSan) when we wait the cancellation of a
    children

    This patch changes Miou's behaviour a little when waiting for a task to be
    cancelled and prevents invalid access to a value that does not belong to the
    current domain (and which can be modified by another domain). Thanks
    @OlivierNicole and @fabbing for their advice on using TSan.

    (@dinosaure, #56)

  • Update the layout of Miou to avoid conflicts with other packages (like backoff)
    (@dinosaure, reported by @patricoferris, #57)

  • OCaml 5.3 support
    (@kit-ty-kate, github#22)

  • Rename Miou.call_cc to Miou.async
    (@dinosaure, @kit-ty-kate, @Armael, github#23)

0.1.0

03 Apr 14:28
Compare
Choose a tag to compare

CHANGES:

A major change in Miou's internals to incorporate the excellent work of
Vesa Karvonen available in his picos project. This change
integrates the Trigger module and the Computation
module. It also uses the Await effect, which we hope will be
standardised.

This addition has enabled us to integrate the new Condition and
Mutex modules.

This change has enabled us to correctly formalise the resources used by our
scheduler and to release them accordingly, particularly with regard to the
cancellation whose behaviour is better defined.

We also took the opportunity to integrate the priority queue extracted from the
Vocal project and checked using Why3. We would like to thank
their authors and maintainers for their help.

Finally, the API has changed very little and only ownership is no longer
mandatory when using the Miou_unix module but is still available
through the Miou_unix.Ownership module.

As such, we have written a tutorial that explains in detail what
Miou can offer and how to create applications with it. It's also a good
introduction to using effects and implementing a mini echo server and mini
scheduler.

The changes are far too profound to establish an accurate Changelog since the
last beta. However, we have tried to respect our previous tests as much as
possible and ensure continuity in what Miou has to offer despite its beta
status. We hope that, given the changes described above, users will understand
this breaking-change.

0.0.1~beta2

10 Jan 15:13
v0.0.1_beta2
15d8abb
Compare
Choose a tag to compare

CHANGES:

0.0.1~beta1

05 Sep 12:21
2f1570b
Compare
Choose a tag to compare

CHANGES:

  • First release of miou