|
For the latest stable version, please use Emilua API 0.11! |
ChangeLog
0.7 - 2024-04-17
Added
-
Add seccomp support.
-
Add
filesystem.mkdir()to complementfilesystem.create_directory(). -
filesystem.mode()accepts new arguments now. -
Add
filesystem.chroot(). -
filesystem.current_working_directory()acceptsfile_descriptorobjects on UNIX now. -
Add extra optional parameter to filesystem.mknod().
-
Add
filesystem.clock.epoch(). It’s useful to set the last modification date of every file in some directory for the purposes of a reproducible build or something. However there are more attributes besides last-write-time you need to care about if you’re planning to play with reproducible builds (be warned!). -
Add
filesystem.clock.unix_epoch()andfilesystem.clock.now(). -
Add more POSIX bindings to init.script API.
-
Add the
flock()family tofile.streamandfile.random_access. -
Now it’s possible to configure Landlock mode for the calling process or
system.spawn()subprocesses. -
Add
byte_spanmethods for primitive types serialization (e.g. reading i32le from a 4-sized buffer). It also works as an endianness handling interface. 64-bit integers are omitted from the interface because LuaJIT only offers a hacky way to handle them.
Changed
-
Make subprocess.pid nullable. That’s useful for synchronization when multiple fibers are observing parts of subprocess state.
-
Allow file_descriptor.close() to be called multiple times in a row.
-
Change
filesystem.copy_file()parameters. -
Change every name in the module filesystem from
hard_*tohard*(e.g.create_hard_link()tocreate_hardlink()). This C++17 convention is dumb and Python’s pathlib is the one who got it right. -
Change default
record_separatorinstream.scannerto"\n". -
Always start subprocess-based actors with umask 022.
-
Change
system.spawn()parameters fromnsenter_*tosetns_*.
0.6 - 2024-01-06
Added
-
Add FreeBSD’s jails support.
-
Add function
format()to format strings. The implementation uses C++'s libfmt. -
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.
-
file_descriptorimplemented for Windows pipes andfile.stream. -
Many improvements to Windows version of
system.spawn().
Changed
-
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.
0.5 - 2023-12-03
0.4 - 2023-04-03
Added
-
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).
-
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. -
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. -
Documentation can now be installed as manpages.
-
Support for io_uring.
Changed
-
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. -
Moved
steady_timerto the new moduletime. -
tls.ctxrenamed totls.context. -
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(). -
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.
-
The build system now makes use of Meson’s wrap system.
0.3 - 2021-03-04
Added
-
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.
0.2 - 2021-01-31
Changed
-
Refactor module system. The new module system is incompatible with the previous one. Please refer to the documentation.
-
Numeric values for error codes changed.