|
For the latest stable version, please use Emilua API 0.11! |
ChangeLog
0.6
-
Add FreeBSD’s jails support.
-
Add function
format()to format strings. The implementation uses C++'s libfmt. -
Convert decomposition functions from filesystem.path to properties:
root_name,root_directory,root_path,relative_path,parent_path,filename,stem,extension. -
Convert some filesystem.path properties to string:
root_name,root_directory,filename,stem,extension. -
filesystem.path.iterator() will return strings at each iteration now.
-
Add more functions to the module filesystem:
exists(),is_block_file(),is_character_file(),is_directory(),is_fifo(),is_other(),is_regular_file(),is_socket(),is_symlink(),mode(). It was already possible to query for these attributes. These functions were added as an extra convenience. -
Add yet more functions to the module filesystem:
mkfifo(),mknod(),makedev(). -
New UNIX socket options to retrieve security labels and credentials from the remote process.
-
Remove HTTP & WebSocket classes. They should be offered as separate plugins.
-
file_descriptorimplemented for Windows pipes andfile.stream. -
Many improvements to Windows version of
system.spawn().
0.5
-
Add
mutex.try_lock(). -
Add module
recursive_mutex. -
Add module
future. -
Add
filesystem.chown(). -
Enable IPC-based actors on all UNIX systems.
-
spawn_vm() performs the same module path resolution from require() now. That means it’s possible to use root-imports from spawn_vm().
-
spawn_vm() parameters refactored (API break).
-
Add Linux Landlock support.
-
Add FreeBSD Capsicum support.
0.4
-
A new
byte_spantype akin to Go slices is used for IO ops. -
Actor channels now can transceive file descriptors.
-
Support for Linux namespaces. Now you can set up sandboxes and run isolated actors (or just the well-known containers).
-
Upgrade to C++20. The motivating feature for the upgrade was
std::atomic<std::weak_ptr<T>>. However, other C++20 features are being used as well. -
Removed
println(). -
Removed
sleep_for. Its functionality has been replaced by the moduletime. -
Moved
steady_timerto the new moduletime. -
Removed
ip.tcp.resolver. Its functionality has been replaced byip.get_address_info(). -
tls.ctxrenamed totls.context. -
Modules
ipandtlsgrew a lot. The API for sockets now supports IO ops onbyte_spaninstances, and plenty of new functions and classes (including UDP) were added. -
inbox.recv()renamed toinbox.receive() -
Module
condrenamed tocondition_variable. -
error_code.catrenamed toerror_code.category. -
spawn_ctx_threads()renamed tospawn_context_threads(). -
inherit_ctxrenamed toinherit_contextinspawn_vm(). -
New modules.
-
time: clocks and timers. -
pipe. -
unix: UNIX domain sockets. -
serial_port: serial ports. -
system: UNIX signals, CLI args, env vars, process credentials, and much more. -
file: file IO. Only available on systems with proactors (e.g. Windows with IOCP, and Linux with io_uring). BSD can still be supported later (with kqueue + POSIX AIO). -
filesystem: portable path-manipulation, and plenty of filesystem operations & algorithms. -
stream: AWK-inspired scanner and common stream algorithms. -
regex: Basic regex functions. The interface has been inspired by C++, Python and AWK. -
generic_error: portable error comparison for filesystem, sockets, and much more. -
asio_error: errors thrown by the asio layer. -
websocket.
-
-
Lua programs can define their own error categories now.
-
Several new OS-specific APIs (e.g. Linux capabilities, and Windows'
TransmitFile()). -
Add
http.request.upgrade_desired(). -
http.socketcan work on top of UNIX domain stream sockets now. -
Now Emilua is less liberal on accepted values for env var
EMILUA_COLORS. -
Finer-grained cancellation of IO ops.
-
Locales are set at application startup.
-
Bug fixes.
-
The build system now makes use of Meson’s wrap system.
-
Documentation can now be installed as manpages.
-
Support for io_uring.
0.3
-
HTTP request and response objects now use read-write locks and there is some limited sharing that you can do with them without stumbling upon EBUSY errors.
-
Improvements to the module system (that’s the main feature for this release). You should be able to use guix as the package manager for your emilua projects.
-
EMILUA_PATH environment variable.
-
Native plugins API (it can be disabled at build configure time).
-
Add logging module.
-
Add manpage.
-
--versionCLI arg. -
Build configure options to disable threading.
-
Use fmtlib from host system.
0.2
-
Fix build when compiler is GCC.
-
Refactor module system. The new module system is incompatible with the previous one. Please refer to the documentation.
-
Add HTTP query function:
http.request.continue_required(). -
Remove
failed_to_load_moduleerror code. Now you should see"iostream error"or other more informative error reasons upon a failed module load. -
Numeric values for error codes changed.