For the latest stable version, please use Emilua API 0.10! |
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_descriptor
implemented 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_span
type 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_timer
to the new moduletime
. -
Removed
ip.tcp.resolver
. Its functionality has been replaced byip.get_address_info()
. -
tls.ctx
renamed totls.context
. -
Modules
ip
andtls
grew a lot. The API for sockets now supports IO ops onbyte_span
instances, and plenty of new functions and classes (including UDP) were added. -
inbox.recv()
renamed toinbox.receive()
-
Module
cond
renamed tocondition_variable
. -
error_code.cat
renamed toerror_code.category
. -
spawn_ctx_threads()
renamed tospawn_context_threads()
. -
inherit_ctx
renamed toinherit_context
inspawn_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.socket
can 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.
-
--version
CLI 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_module
error code. Now you should see"iostream error"
or other more informative error reasons upon a failed module load. -
Numeric values for error codes changed.