package async
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=fef9ebe342ea59d7804f6292b7891ad664a8ba8d4174a1b202db91363a9c71ab
md5=fbfc7059179bc9ddd5dc1411e7d2e815
doc/CHANGES.html
git version
- Added a new (single-module) library
async.log_extended, extendingAsync.LogwithConsoleandSyslogsubmodules. - Improved Async scheduler fairness by calling Thread.yield every cycle, which releases the OCaml lock if any other OCaml threads are waiting to acquire it.
- Added a new (single-module) library
async.unpack_sequence, for efficiently unpacking a sequence of packed values coming from astring Pipe.Reader.tor aReader.t. - Increased Unix.listen's default backlog from 10 to 64, to reduce occurrences of TCP clients getting Unexpected EOF errors when the listening server is busy.
- Added an optional argument to Pipe functions fold and iter so they can consider a value flushed when it is processed by the supplied ~f rather than when it is read out of the pipe.
Weak_hashtblwas moved into its own libraryWeak_hashtbl_async, which is released as part of the async package.- Added function
Tcp.Server.close_finished_and_handlers_determined.
v0.10
- Moved
Persistent_connectiontoAsync_kernel, so that it can be used in javascript. - Improved
Log.Outputto write, flush, rotate, or close allLog.Output.ts, even if one raises - Added
Async.print_sfor pretty printing a sexp to stdout. - Removed a per-cycle allocation from the scheduler.
- Fixed
Reader.load_bin_protto always returnErrorwhen there is an error, rather than returnErrorin some situations and raise in others. - Improved the behavior of shutdown when there are errors.
- Added
Scheduler.may_sleep_for_thread_fairness, an opt-in configuration that improves thread fairness. - Added to
Sys.file_existsfunction afollow_symlinksoptional argument. - Fixed the Async scheduler so that for top-level unhandled exceptions, it runs
at_exitfunctions once, not twice. - For
Writer.open_file, exposed the syscall optional argument. - Exposed
Async.ifprintf, which had previously been mistakenly shadowed even though it doesn't block. - Unified
Synchronous_time_source.tandTime_source.t, into a single data structure, allowing one to convert between them as needed. This involved substantive changes to Async's clock. - Added function
Time_source.timing_wheel_now. - Added stable types for
Log.LevelandLog.Output.format. - Improved shutdown function so that when shutdown is forced (i.e.
at_shutdownhandlers time out), it callsPervasives.exit, which runsat_exithandlers. This improvesCommand.asyncin this situation, due to its use of anat_exithandler to print errors. - Improved
Process.run's error message whenworking_diris missing. - Fixed
Rpc.Connection.createso that it doesn't raise on a failed handshake. - Significantly improved the performance of
Log.printfwhen the log message won't be printed, by usingifprintfto avoid constructing the message. - Added
Socket.AddressfunctionsInet.to_sockaddrandUnix.to_sockaddr, the type specialized versions ofSocket.Address.to_sockaddr. - Added
Socket.bind_inet, which is like bind, but restricted to Inet addresses and does not return aDeferred.t. ChangedUdp.bindandbind_anyto not return aDeferred.t. - Added to
File_tail.createan optional?throttleargument so that one can use a custom throttle andmax_concurrent_jobsrather than a global throttle with a fixedmax_concurrent_jobs. - Renamed
TcpandRpc'svia_local_interfaceandvia_local_portarguments asbind_to_addressandbind_to_port. - Made
Tcp.Server.createandcreate_sock's~on_handler_errorargument mandatory. - In
Tcp.Server, stopped callingon_handler_errorforWritererror frominner_monitor, which only indicated that the client likely closed the connection before all the bytes could be written. - Renamed
Command.asyncasasync_specandCommand.async'asasync. We want to encourage the use ofCommand.Paramand discourage the use ofCommand.Spec. - Changed
Asyncso that in tests it uses synchronous output. - Changed
Async's default max number of open file descriptors from8_192to the minimum of32_768andulimit -n -H. - In the Async scheduler's main loop, avoided calling
Time_ns.nowandLinux_ext.Timerfd.set_afterunless they are needed. This saves about 50ns per cycle. - Moved
Tcpfunctions for specifying where to connect and where to listen into submodules:Where_to_connectandWhere_to_listen - Changed
Tcp.to_host_and_portfrom taking a string and int toTcp.Where_to_connect.of_host_and_port, taking aHost_and_port.t - Changed
Rpc.Connection.clientto take aTcp.Where_to_connect.tinstead of~host ~port. - Changed
Synchronous_time_source.Event.abortto return a variant type, in the same style asTime_source.Event.abort. Addedabort_exnandabort_if_possible, also in the same style asTime_source.Event. - Added function
Scheduler.long_cycles, which returns the stream of cycles whose duration exceeds a user-supplied time span. This is more efficient thancycle_times, because it only allocates a stream element when there is a long cycle, rather than on every cycle. - Made internal libraries stdless:
Async_unix,Async_extra. - Changed
Udp.recvfrom_loopandread_loopfunctions to return a variantClosed | Stoppedrather thanunit. - Extended the
Unix.Inet_addrmodule's interface to includeCore.Unix.Inet_addr's interface.
v0.9
113.43.00
- Added some expect tests of
Monitor, in particularMonitor.handle_errors. - Added a benchmark of
Monitor.try_with.
113.33.00
Keep up to date with interface changes in Async_kernel, Async_extra and Async_unix.
113.24.00
Keep up to date with interface changes in Async_kernel, Async_extra and Async_unix.
113.00.00
Added
Async.Std.Printfmodule so that one doesn't unintentionally use blockingCore.Std.Printffunctions in an Async program.There was much pre-existing code that did this via:
: open Core.Std : open Async.Std
Async.Std.Printfdefines blocking functions (e.gprintf,eprintf) to cause a type error, but leaves Async-friendly functions (e.g.sprintf,ksprintf) untouched.Replaced uses of
Printf.*, withCore.Std.Printf.*where needed.
112.35.00
- Include some previously-omitted benchmarks
112.24.00
Keep up to date with interface changes in Async_kernel, Async_extra and Async_unix.
112.17.00
Added tests and updated examples
112.01.00
- update tests
111.25.00
- add a dns example
111.11.00
- Updated the sound.ml example
109.53.00
- Bump version number
109.14.00
Added function
Monitor.kill, which kills a monitor and all its descendants.This prevents any jobs from ever running in the monitor again.
109.09.00
- Switched
Async.Std's toplevel bindings forDeferred.Or_error'sbindandmapto useDeferred.Result. This allows them to be used with any'errortype, rather than justError.t.
109.05.00
- Added
val _squelch_unused_module_warning_toAsync.Std.