Releases: joaop21/exth
v0.5.0
2025-08-06
This release adds IPC transport support for local Ethereum node communication via Unix domain sockets.
Added
- IPC transport implementation using Unix domain sockets
- Connection pooling with NimblePool for efficient resource utilization
- Comprehensive IPC transport documentation and examples
Changed
- Updated transport documentation to include IPC transport options
- Enhanced examples with IPC transport usage
- Added IPC transport to the list of supported transport types
- Updated transport factory to support
:ipctransport type
Full Changelog: v0.4.2...v0.5.0
v0.4.2
2025-07-04
This release intends to improve the reliability and fault-tolerance of the
transport layer.
Added
- Supervision Tree for Transport layer
- Websocket process registration with via-tuples through Registry
Full Changelog: v0.4.1...v0.4.2
v0.4.1
2025-06-14
Fixed
- Remove spaces from HTTP user-agent
- Fix WebSocket test flakiness caused by Registry name conflicts
Full Changelog: v0.4.0...v0.4.1
v0.4.0
2025-06-12
Added
-
Websocket transport implementation.
-
Support for subscriptions over websockets.
-
Provider functions for websocket subscriptions (
subscribe_blocks/0,
subscribe_pending_transactions/0,subscribe_logs/0,subscribe_logs/1,
unsubscribe/1). -
Internally added a
MessageHandlerresponsible for handling incoming async
messages/notifications and routing them to the appropriate caller. -
Internally added
Exth.Rpc.Callstruct that represents a chain of RPC calls
that can be executed in sequence or as a batch. -
Internally changed
Exth.Rpc.Clientto useExth.Rpc.Callstructs that allow
batch requests to be made piping requests, like:client |> Rpc.request("eth_blockNumer", []) |> Rpc.request("net_version", []) |> Rpc.send()
Changed
- Transport layer was responsible for serializing, deserializing and sending
requests. Now, it's only responsibility is to send requests and receive
responses, to keep its scope as minimal as possible. - Encoding and decoding logic was moved to
Exth.Rpcsubdomain.
Fixed
- made
:otp_appnot required in the Provider configuration
Full Changelog: v0.3.0...v0.4.0
v0.3.0
2025-04-11
Added
- Support for dynamic configuration through both inline options and application configuration
- examples directory with practical usage examples
Full Changelog: v0.2.2...v0.3.0
v0.2.2
2025-04-07
Changed
- Moved
Exth.Rpc.Encoding.encode_request/1logic toExth.Rpc.Request.serialize/1 - Moved
Exth.Rpc.Encoding.decode_response/1logic toExth.Rpc.Response.deserialize/1 - Removed
Exth.Rpc.Encodingmodule - Transport module does not receive an
encoder/1anddecoder/1option
anymore. It's now direct to callExth.Rpc.Request.serialize/1and
Exth.Rpc.Response.deserialize/1functions. - These changes aim to reduce the complexity of
Exth.RpcandExth.Transport
modules and make it easier to understand its internals.
Full Changelog: v0.2.1...v0.2.2
v0.2.1
2025-04-05
Changed
Exth.Providerwas refactored to reduce its complexity- Fixed dialyzer warnings on
Exth.Providerrelated tohas no local return.
Some types were fixed and the dialyzer warning does not appear anymore. No
more warnings when defining providers.
Full Changelog: v0.2.0...v0.2.1
v0.2.0
2025-04-04
Added
- Documentation for
Exth.Rpc.RequestandExth.Rpc.Responsestructs - Allow inverting arguments order on
Exth.Rpc.send/2andExth.Rpc.Client.send/2- This change allows for more flexible usage patterns (pipes)
- Creation of request IDs on
Exth.Rpc.Client.send/2when no pre-assigned IDs
are provided - Creation of requests with no pre-assigned IDs with
Exth.Rpc.request/2and
Exth.Rpc.Client.request/2
Changed
- Replaced
JasonwithJSONfor JSON encoding/decoding - Updated
README.mdfor documentation purposes - Updated
Exth.Rpc.Clientdocumentation
Full Changelog: v0.1.1...v0.2.0
v0.1.1
2025-03-27
Changed
mintdependency is now:optionalinstead ofonly: :dev;- Updated
README.mdfor documentation purposes, with more examples and better formatting;
Full Changelog: v0.1.0...v0.1.1
v0.1.0
2025-03-25 🚀
Added
- Initial release of Exth
- Core JSON-RPC functionality
- Request/Response handling
- Method generation
- Parameter encoding
- Transport layer abstraction
- HTTP Transport implementation using Tesla
- Configurable middleware support
- Provider interface
- Ethereum namespace support (
eth_*methods) - Net namespace support (
net_*methods) - Web3 namespace support (
web3_*methods)
- Ethereum namespace support (
- Client caching mechanism
- Comprehensive documentation
- MIT License