All notable changes to this project will be documented in this file.
This format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.2.0 - 2021-04-07
- Added TLS support. Introduced new option
TLSmode
inergo.NodeOptions
with the following values:ergo.TLSmodeDisabled
default value. encryption is disabledergo.TLSmodeAuto
enables encryption with autogenerated and self-signed certificateergo.TLSmodeStrict
enables encryption with specified server/client certificates and keys there is example of usageexamples/nodetls/tlsGenServer.go
- Introduced GenStage behavior implementation (originated from Elixir world).
GenStage
is an abstraction built on top ofGenServer
to provide a simple way to create a distributed Producer/Consumer architecture, while automatically managing the concept of backpressure. This implementation is fully compatible with Elixir's GenStage. Example hereexamples/genstage
or just run itgo run ./examples/genstage
to see it in action - Introduced new methods
AddStaticRoute
/RemoveStaticRoute
forNode
. This feature allows you to keep EPMD service behind a firewall. - Introduced
SetTrapExit
/TrapExit
methods forProcess
in order to control the trappinggen.MessageExit
message (for the linked processes) - Introduced
TermMapIntoStruct
andTermProplistIntoStruct
functions. It should be easy now to transformetf.Map
or[]eft.ProplistElement
into the given struct. See documentation for the details. - Improved DIST implementation in order to support KeepAlive messages and get rid of platform-dependent
syscall
usage - Fixed
TermIntoStruct
function. There was a problem withTuple
value transforming into the given struct - Fixed incorrect decoding atoms
true
,false
into the booleans - Fixed race condition and freeze of connection serving in corner case #21
- Fixed problem with monitoring process by the registered name (local and remote)
- Fixed issue with termination linked processes
- Fixed platform-dependent issues. Now Ergo Framework has tested and confirmed support of Linux, MacOS, Windows.
1.1.0 - 2020-04-23
- Fragmentation support (which was introduced in Erlang/OTP 22)
- Completely rewritten network subsystem (DIST/ETF).
- Improved performance in terms of network messaging (outperforms original Erlang/OTP up to x5 times. See Benchmarks)
1.0.0 - 2020-03-03
- We have changed the name - Ergo (or Ergo Framework). GitHub's repo has been
renamed as well. We also created cloned repo
ergonode
to support users of the old version of this project. So, its still available at https://github.com/halturin/ergonode. But it's strongly recommend to use the new one. - Completely reworked (almost from scratch) architecture whole project
- Implemented linking process feature (in order to support Application/Supervisor behaviors)
- Reworked Monitor-feature. Now it has full-featured support with remote process/nodes
- Added multinode support
- Added experimental observer support
- Fixed incorrect ETF string encoding
- Improved ETF TermIntoStruct decoder
- Improved code structure and readability
0.2.0 - 2019-02-23
- Now we make versioning releases
- Improve node creation. Now you can specify the listening port range. See 'Usage' for details
- Add embedded EPMD. Trying to start internal epmd service on starting ergonode.