- zig compilation and automatic nif generation
- safety checks on ingress and egress data
- documentation of zig code through ExDoc
- unit test integration
Thanks to Dave Cottlehuber @dch for testing.
- freebsd tested and unsupported Logger error removed.
- zig documentation is now correctly linked.
- updated documentation for
mix zig_doc - fixed compilation so that importing zig stdlib doesn't error
- added better compilation failures for bad types in args and retvals
- added
beamstruct support for ok and error tuples
- fixed error reporting for the
/// nif:directive - added ok/error tuple with string
- added c header path support
- restored documentation for exceptions
- general rewrite of nif parsing routines
- initial support for resources
- experimental addition of
:dirty,:longand:safefunction directives
- supported zig version: 0.6.0
- disabled
:longmode
- support for (and autodetect) nerves
- use erlang nif headers taken from the
includedirectory of your erts. - correct and verified support for releases
- adds a mechanism for patching errors in zig/llvm releases
- adds ~z for substituted values
- zigler fetches zig on compile when it's in prod.
- verified that zig tests run correctly
- updated documentation.
- preliminary "under the hood" category.
- support for
amd64in freebsd, (thanks @dch)
- better support for nerves (thanks @fhunleth)
- fixed documentation linking for bootstrap
- upgraded to zig 0.7.1. From now on zigler version numbers will track Zig releases.
- completed implementation of
threadednifs. - makes the interface to
beam.sendsimpler and less confusing. - adds extra atom/tuple directives
- important: changes the base module namespace from
ZiglertoZig - readme and guides are now checked.
- libraries are now brought into the staging directory.
- unblocked windows compilation path. There are still some bugs. Thanks @seomwan
- regressions:
- Nerves support will have to be dropped until arm32 is tier 1. Use 0.3.2.
- zigtests do not seem to work when libraries are loaded
- note: this compiles with zig 0.7.1
- important (breaking): semantics for
beam.yieldhave changed. there is no longer any need to update the environment of the yielding function, andbeam.yield()now returns!void beam.yieldis safely usable in non-yielding nifs.- Zigler now no longer automatically links libc. This may cause compilation problems on non-linux platforms. Please post any bug reports to github tracker.
- thanks to (@dch and @wojtekmach for updating some dependency issues)
- note: this compiles with zig 0.7.1
- better platform matching for nerves cross-compliation (@fhunleth)
beam.assertdeprecated. Usestd.testingfunctions.- support for error-returning functions and error return traces merged with stacktraces.
- support for cancellation of threaded nifs with
beam.yield - better support for 'bring your own zig'; moved to library config function
- tentative support for MacOS and FreeBSD targets
voidreturning functions now output:okinstead ofnil
- updated to zig 0.9.1, after allocgate
- support for compling C and C++ files using
zig cc - support for
link_libcppin addition tolink_libc - special thanks to @jeremyowensboggs, who had a nicer upgrade implementation than mine.
- complete overhaul of entire zig system
- Breaking changes:
beam.get,beam.make- nif selection is no longer done using inline docstrings
- select nifs using
use Zigoptions.
- select nifs using
- zig test has been deprecated, and may return as a plugin library in the future
- zig doc has been deprecated for general use, though can
be used experimentally through
Zig.Doc - yielding nifs are not supported, but will return in 0.11 due to zig async not working in 0.10.x
- breakout
zig.getinto its own package to prevent dependency problems. - breakout
zig.docinto its own package to prevent dependency problems. - versioning of .so files should track the version. This feature should be considered experimental.
- use of threadlocal
beam.contextto keep contextual information for your NIF- major changes in
beam.getandbeam.make .asoption forbeam.makewith recursive descent
- major changes in
- full range of
on_load,on_update, andon_reloadfunctions - optional allocator functions usable with nifs
- better recursive typing
- smarter
beam.send - attributes imported as compile-time values
- updated to zig 0.13.0
- Breaking changes:
- threadlocal
contextin function calls, optional passingbeam.envinto your functions - makes
beam.get/makefunctionscontext-aware, with all context-dependent things overridable.
- threadlocal
- Breaking changes:
- deprecation of General Purpose Allocator in favor of DebugAllocator
- beam.term_type now uses an options tuple with
envfield. - struct module names are now assigned using the
structoption instead of usingas.
- Windows support:
- Experimental windows support added.
- Error return traces not supported.
- on_upgrade hooks not supported pending module .so versioning changes.
- Features:
- adds ZIG_EXECUTABLE_PATH environment variable
- path resolution from CWD when a path is specified as
./ - adds the ability to override the default fallback function (elixir only)
- Outstanding issues:
- c_ulonglong doesn't work on windows; c_long doesn't work on other platforms.
- Etc:
- uses system
:jsonmodule, if available. - Experimental FreeBSD support added.
- uses system
- no changes.
precompiledmode that will let you obtain packages with precompiled assets.
structwhich lets you declare a struct inside your zig code as the module's struct