|
| 1 | +## v0.12 |
| 2 | + |
| 3 | +New features / API changes: |
| 4 | + |
| 5 | +- Replace objects with variants (@talex5 @patricoferris #553 #605 #608, reviewed by @avsm). |
| 6 | + Some potential users found object types confusing, so we now use an alternative scheme for OS resources. |
| 7 | + For users of the resources, the only thing that changes is the types: |
| 8 | + |
| 9 | + - Instead of taking an argument of type `#foo`, you should now take `_ foo`. |
| 10 | + - Instead of returning a value of type `foo`, you should now return `foo_ty Eio.Resource.t`. |
| 11 | + |
| 12 | + To provide your own implementation of an interface, you now provide a module rather than an object. |
| 13 | + For example, to provide your own source flow, use `Eio.Flow.Pi.source (module My_source)`. |
| 14 | + |
| 15 | + If you want to define your own interfaces, see the `Eio.Resource` module documentation. |
| 16 | + |
| 17 | +- Add `Eio.Pool` (@talex5 @darrenldl #602, reviewed by @patricoferris). |
| 18 | + A lock-free pool of resources. This is similar to `Lwt_pool`. |
| 19 | + |
| 20 | +- Add `Eio.Lazy` (@talex5 #609, reviewed by @SGrondin). |
| 21 | + If one fiber tries to force a lazy value while another is already doing it, |
| 22 | + this will wait for the first one to finish rather than raising an exception (as `Stdlib.Lazy` does). |
| 23 | + |
| 24 | +- Add `Eio.Path.native` (@talex5 #603, reviewed by @patricoferris). |
| 25 | + This is useful when interacting with non-Eio libraries, for spawning sub-processes, and for displaying paths to users. |
| 26 | + |
| 27 | +- Add `Flow.single_write` (@talex5 #598). |
| 28 | + |
| 29 | +- Add `Eio.Flow.Pi.simple_copy` (@talex5 #611). |
| 30 | + Provides an easy way to implement the `copy` operation when making your own sink. |
| 31 | + |
| 32 | +- Eio_unix: add FD passing (@talex5 #522). |
| 33 | + Allows opening a file and passing the handle over a Unix-domain socket. |
| 34 | + |
| 35 | +- Add `Process.run ?is_success` to control definition of success (@SGrondin #586, reviewed by @talex5). |
| 36 | + |
| 37 | +- Add `Eio_mock.Domain_manager` (@talex5 #610). |
| 38 | + This mock domain manager runs everything in a single domain, allowing tests to remain deterministic. |
| 39 | + |
| 40 | +- Add `Eio.Debug.with_trace_prefix` (@talex5 #610). |
| 41 | + Allows prefixing all `traceln` output. The mock domain manager uses this to indicate which fake domain is running. |
| 42 | + |
| 43 | +Bug fixes: |
| 44 | + |
| 45 | +- Fork actions must not allocate (@talex5 #593). |
| 46 | + When using multiple domains, child processes could get stuck if they forked while another domain held the malloc lock. |
| 47 | + |
| 48 | +- eio_posix: ignore some errors writing to the wake-up pipe (@talex5 #600). |
| 49 | + If the pipe is full or closed, the wake-up should simply be ignored. |
| 50 | + |
| 51 | +Build/test fixes: |
| 52 | + |
| 53 | +- Fix some MDX problems on Windows (@polytypic #597). |
| 54 | + |
| 55 | +- The README depends on kcas (@talex5 #606). |
| 56 | + |
| 57 | +- Clarify configuration for lib_eio_linux and enable tests on other arches (@dra27 #592). |
| 58 | + |
| 59 | +- eio_linux tests: skip fixed buffer test if not available (@talex5 #604). |
| 60 | + |
| 61 | +- eio_windows: update available line to win32 (@talex5 #588 #591). |
| 62 | + |
| 63 | + |
1 | 64 | ## v0.11 |
2 | 65 |
|
3 | 66 | New features / API changes: |
|
0 commit comments