[0.3.0] - 2026-02-05
SafeNIF now detects whether or not you are in a release, and will automatically use your current release's start_clean.boot bootfile in order to start up the :peer node. This ensures that SafeNIF can work properly with Elixir's mix release system, something that I unfortunately fully didn't test out before pushing this out to production.
Added
:peer_applications- For custom pools, you can decide which applications will be started on the peer nodes. In the default pool this defaults to only:safe_nif, and if not passed in to custom pools it will default to:safe_nifas well
[0.2.1] - 2026-01-27
Added
:peer_applications- For custom pools, you can decide which applications will be started on the peer nodes. In the default pool this defaults to only:safe_nif, and if not passed in to custom pools it will default to:safe_nifas well
[0.2.0] - 2026-01-27
Pooling :peer nodes has been implemented!
You now no longer incur the startup costs of nodes on every call, instead, you only incur them on the first call.
Breaking Changes
SafeNIF.wrap/1andSafeNIF.wrap/4now receive aKeyword.t/0as their last parameter instead of a timeout directly. This is in order to allow us to pass details like the pool name (if you have a custom pool), and details related to timeouts of the pool.
Notes
Pooled :peer nodes are implemented with the following details:
- They are lazily created, so they will not start up until the first call.
- They are killed if they are idle, to ensure that when they are not in use they will scale in.
[0.1.1] - 2026-01-27
Minor fixes to the documentation.
This release doesn't change anything with regards to functionality, but I realized that I left moduledocs on the bench and test modules which were then placed into HexDocs. This release is simply to make those all false, and fix up the HexDocs functionality.
[0.1.0] - 2026-01-26
Initial release.
Added
SafeNIF.wrap/2andSafeNIF.wrap/4- Execute functions on isolated peer nodes with crash protection- Automatic code path and application configuration transfer to peer nodes
- Hidden node support - peer nodes don't appear in
Node.list/0or trigger:net_kernelmonitors - Configurable timeouts via
to_timeout/1 - Telemetry events for supervisor metrics (
:safe_nif, :supervisor)
Notes
This is an experimental release. The API may change in future versions.
Current limitations:
- Each call starts a new peer node, incurring node startup overhead
- Anonymous functions only work if their defining module is loaded on the peer
- Requires the calling node to be running in distributed mode