Packages

macula

0.7.2
7.0.0 6.0.0 5.2.2 5.2.1 5.2.0 5.1.0 5.0.0 4.8.0 4.7.1 4.7.0 4.6.0 4.5.0 4.4.10 4.4.9 4.4.8 4.4.7 4.4.6 4.4.5 4.4.4 4.4.3 4.4.2 4.4.1 4.4.0 4.3.1 4.3.0 4.2.9 4.2.8 4.2.7 4.2.6 4.2.5 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.1 4.1.0 4.0.0 3.16.0 3.15.3 3.15.2 3.15.1 3.14.0 3.13.0 3.12.1 3.12.0 3.11.1 3.11.0 3.10.3 3.10.2 3.10.1 3.9.0 3.8.0 3.7.0 3.5.0 3.4.0 3.3.0 3.2.0 3.1.0 3.0.0 2.1.1 2.1.0 2.0.0 1.5.2 1.5.1 1.4.30 1.4.29 1.4.28 1.4.27 1.4.26 1.4.25 1.4.24 1.4.23 1.4.22 1.4.21 1.4.20 1.4.19 1.4.18 1.4.17 1.4.16 1.4.15 1.4.14 1.4.13 1.4.11 1.4.10 1.4.9 1.4.8 1.4.7 1.4.6 1.4.5 1.4.4 1.4.3 1.4.2 1.4.1 1.4.0 1.3.1 1.3.0 1.2.0 1.1.0 1.0.10 1.0.9 1.0.8 1.0.7 1.0.6 1.0.5 1.0.4 1.0.3 1.0.2 1.0.1 1.0.0 0.48.6 0.48.5 0.48.4 0.48.3 0.48.2 0.48.1 0.48.0 0.47.1 0.47.0 0.46.3 0.46.1 0.46.0 0.45.3 0.45.2 0.45.1 0.45.0 0.44.2 0.44.1 0.44.0 0.43.3 0.43.2 0.43.1 0.43.0 0.42.9 0.42.8 0.42.7 0.42.6 0.42.5 0.42.4 0.42.3 0.42.2 0.42.1 0.42.0 0.41.1 0.41.0 0.40.1 0.40.0 0.39.9 0.39.8 0.39.7 0.39.6 0.39.5 0.39.4 0.39.3 0.39.2 0.39.1 0.39.0 0.38.8 0.38.7 0.38.6 0.38.5 0.38.4 0.38.3 0.38.2 0.38.1 0.38.0 0.37.7 0.37.6 0.37.5 0.37.4 0.37.3 0.37.2 0.37.1 0.37.0 0.36.6 0.36.5 0.36.4 0.36.3 0.36.2 0.36.1 0.36.0 0.35.4 0.35.3 0.35.2 0.35.1 0.35.0 0.34.1 0.34.0 0.33.1 0.33.0 0.32.5 0.32.4 0.32.3 0.32.2 0.32.1 0.32.0 0.31.9 0.31.8 0.31.7 0.31.6 0.31.5 0.31.4 0.31.3 0.31.2 0.31.1 0.31.0 0.30.10 0.30.9 0.30.8 0.30.7 0.30.6 0.30.5 0.30.4 0.30.3 0.30.2 0.30.1 0.30.0 0.29.0 0.28.3 0.28.2 0.28.1 0.28.0 0.27.1 0.27.0 0.26.1 0.26.0 0.25.6 0.25.5 0.25.4 0.25.3 0.25.2 0.25.1 0.25.0 0.24.6 0.24.5 0.24.4 0.24.3 0.24.2 0.24.1 0.24.0 0.23.3 0.23.2 0.23.1 0.23.0 0.22.12 0.22.11 0.22.10 0.22.9 0.22.8 0.22.7 0.22.6 0.22.5 0.22.4 0.22.3 0.22.2 0.22.1 0.22.0 0.21.7 0.21.6 0.21.5 0.21.4 0.21.2 0.21.1 0.21.0 0.20.25 0.20.24 0.20.23 0.20.22 0.20.21 0.20.20 0.20.19 0.20.18 0.20.17 0.20.16 0.20.15 0.20.14 0.20.13 0.20.12 0.20.11 0.20.10 0.20.9 0.20.8 0.20.7 0.20.6 0.20.5 0.20.3 0.20.2 0.20.1 0.20.0 0.19.2 0.19.1 0.19.0 0.18.1 0.18.0 0.17.4 0.17.3 0.17.2 0.17.1 0.17.0 0.16.6 0.16.5 0.16.4 0.16.3 0.16.2 0.16.1 0.16.0 0.15.1 0.15.0 0.14.3 0.14.2 0.14.1 0.14.0 0.12.6 0.12.5 0.12.3 0.11.3 0.10.2 0.10.1 0.10.0 0.9.2 0.9.1 0.9.0 0.8.25 0.8.24 0.8.23 0.8.22 0.8.21 0.8.20 0.8.19 0.8.18 0.8.17 0.8.16 0.8.15 0.8.14 0.8.13 0.8.12 0.8.11 0.8.10 0.8.9 0.8.8 0.8.7 0.8.6 0.8.5 0.8.4 0.8.3 0.8.2 0.8.1 0.8.0 0.7.30 0.7.29 0.7.28 0.7.27 0.7.26 0.7.25 0.7.24 0.7.23 0.7.22 0.7.21 0.7.20 0.7.19 0.7.18 0.7.17 0.7.16 0.7.15 0.7.14 0.7.13 0.7.12 0.7.11 0.7.10 0.7.9 0.7.8 0.7.7 0.7.6 0.7.5 0.7.4 0.7.3 0.7.2 0.7.1 0.7.0 0.6.7 0.6.6 0.6.5 0.6.4 0.6.3 0.6.2 0.6.1 0.6.0 0.5.0 0.4.4 0.4.3 0.4.2 0.4.1 0.4.0 0.3.4 0.3.3 0.3.2 0.3.1

Macula HTTP/3 Mesh SDK — connect, subscribe, publish, call, advertise

Current section

Files

Jump to
macula CHANGELOG.md
Raw

CHANGELOG.md

# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.7.2] - 2025-11-15
### Fixed
- **CRITICAL**: Fixed gateway crash in `parse_endpoint/1` when DNS resolution fails
- Bug: `inet:getaddr/2` error tuple was not handled, causing ArgumentError when passed to `byte_size/1`
- Impact: Gateway crashed repeatedly, closing all client connections and preventing pub/sub communication
- Symptoms: "Failed to publish to topic: :closed", "Failed to send STORE for subscription: :closed"
- Fix: Added proper error handling with localhost fallback when DNS resolution fails
- Now returns `{{127,0,0,1}, Port}` fallback instead of crashing
**This is a critical fix for production deployments where endpoint DNS resolution may fail.**
## [0.7.1] - 2025-11-15
### Fixed
- **CRITICAL**: Fixed ArithmeticError in `macula_pubsub_handler` message ID handling
- Bug: Was assigning binary MsgId to counter instead of integer NewCounter
- Impact: Caused pub/sub to crash on second publish attempt with "bad argument in arithmetic expression"
- Fix: Corrected destructuring in line 300 to use `{_MsgId, NewCounter}` instead of `{MsgIdCounter, _}`
- Now properly increments integer counter instead of trying to do arithmetic on binary
**This is a critical fix for anyone using pub/sub functionality in v0.7.0.**
## [0.7.0] - 2025-11-15
### Changed
- **BREAKING**: Major nomenclature refactoring for clarity and industry alignment
- Renamed `macula_connection``macula_peer` (mesh participant facade - high-level API)
- Renamed `macula_connection_manager``macula_connection` (QUIC transport layer - low-level)
- Follows industry standards used by libp2p, IPFS, and BitTorrent
- Clear separation: `macula_peer` = mesh participant, `macula_connection` = transport
### Added
- Comprehensive transport layer test coverage (36 tests total)
- 11 new tests for message decoding, buffering, URL parsing, and realm normalization
- All tests passing with zero regressions
- Complete v0.7.0 documentation in CLAUDE.md
- Migration guide with specific API examples
- Architecture rationale and benefits
- Status tracking for implementation phases
### Migration Guide (0.6.x → 0.7.0)
**API Changes:**
All high-level mesh operations now use `macula_peer` instead of `macula_connection`:
```erlang
%% Before (0.6.x)
{ok, Client} = macula_connection:start_link(Url, Opts).
ok = macula_connection:publish(Client, Topic, Data).
{ok, SubRef} = macula_connection:subscribe(Client, Topic, Callback).
{ok, Result} = macula_connection:call(Client, Procedure, Args).
%% After (0.7.0)
{ok, Client} = macula_peer:start_link(Url, Opts).
ok = macula_peer:publish(Client, Topic, Data).
{ok, SubRef} = macula_peer:subscribe(Client, Topic, Callback).
{ok, Result} = macula_peer:call(Client, Procedure, Args).
```
**Why This Change?**
The original naming was confusing:
- `macula_connection` served both facade AND transport roles
- ❌ Mixed high-level mesh operations with low-level QUIC handling
- ❌ Not aligned with P2P industry standards
After v0.7.0:
- `macula_peer` = mesh participant (clear high-level API for pub/sub, RPC, DHT)
- `macula_connection` = QUIC transport (clear low-level transport layer)
- ✅ Follows libp2p/IPFS/BitTorrent naming conventions
**Note:** The `macula_client` wrapper module has been updated to use `macula_peer` internally, so if you're using `macula_client`, no changes are required.
## [0.6.7] - 2025-11-15
### Fixed
- **CRITICAL:** Fixed all installation examples to use Hex package references instead of git dependencies
- README.md: Changed from git-based to `{:macula, "~> 0.6"}` (Elixir) and `{macula, "0.6.7"}` (Erlang)
- HELLO_WORLD.md: Updated to use proper Hex package format
- architecture/macula_http3_mesh_hello_world.md: Fixed tutorial installation examples
- architecture/macula_http3_mesh_rpc_guide.md: Fixed migration guide examples
- All code examples now show proper Hex.pm installation for published package
## [0.6.6] - 2025-11-15
### Fixed
- Fixed navigation links in documentation guides to use ex_doc HTML filenames
- Changed GitHub-style relative paths (`../README.md`) to ex_doc HTML references (`readme.html`)
- Fixed all navigation links in EXECUTIVE_SUMMARY.md, COMPARISONS.md, USE_CASES.md, and DEVELOPMENT.md
- Links now work correctly in published Hexdocs without "page not found" errors
## [0.6.5] - 2025-11-15
### Changed
- Updated to modern alternative logo (macula-alt-logo.svg) in both README.md and ex_doc
- Changed tutorial greeting to brand-specific "Hello, Macula!" instead of generic greeting
### Fixed
- Replaced old color logo with cleaner, more modern alternative logo for better visual appeal
## [0.6.4] - 2025-11-15
### Changed
- **Documentation restructuring** - Split README.md into focused landing page with table of contents
- Created `docs/EXECUTIVE_SUMMARY.md` - Why Macula and the case for decentralization
- Created `docs/COMPARISONS.md` - How Macula compares to libp2p, Distributed Erlang, Akka, etc.
- Created `docs/USE_CASES.md` - Real-world applications across business, IoT, and AI domains
- Created `docs/DEVELOPMENT.md` - Complete development guide and coding standards
- README.md now serves as concise landing page (119 lines vs 372 lines)
- All detailed content accessible via clear table of contents
- Removed Mermaid diagram from README.md (ex_doc doesn't support Mermaid - works on GitHub)
### Fixed
- ex_doc landing page uses HELLO_WORLD.md (tutorial-first approach, no multi-page split)
- Documentation properly links to all new guide documents
- Better first impression for Hex.pm users (logo, quick navigation)
## [0.6.3] - 2025-11-15
### Fixed
- Removed README.md from ex_doc extras to prevent multi-page split and broken landing page
- Documentation now correctly redirects to API reference page
## [0.6.2] - 2025-11-15
### Fixed
- ex_doc landing page configuration (`{main, "api-reference"}`) - resolved "readme.html not found" error
## [0.6.1] - 2025-11-15
### Added
- Professional documentation structure for Hex publication
- Architecture diagram in README.md (Mermaid format) showing mesh topology
- Organized documentation: moved 50+ files from root to docs/archive/, docs/development/, docs/planning/
- Created docs/README.md navigation index
- Logo and assets configuration for ex_doc
- Comprehensive Hex package file list (artwork/, docs/, architecture/)
### Fixed
- README.md badge rendering (moved badges outside `<div>` tag for proper GitHub display)
- ex_doc assets configuration (deprecated warning resolved)
- ex_doc landing page configuration (changed `{main, "readme"}` to `{main, "api-reference"}` to fix "readme.html not found" error)
- Hex package configuration to include all necessary assets and documentation
- Documentation organization for professional first impression
## [0.6.0] - 2025-11-15
### Changed
- **BREAKING**: Renamed environment variable from `GATEWAY_REALM` to `MACULA_REALM` for better API consistency
- All `MACULA_*` environment variables now follow consistent naming
- Applies to both gateway mode and edge peer mode
- Update your deployment configurations to use `MACULA_REALM` instead of `GATEWAY_REALM`
### Added
- Comprehensive Kademlia DHT architecture documentation (`docs/KADEMLIA_DHT_ARCHITECTURE.md`)
- XOR distance metric explanation
- K-bucket routing table details
- DHT operations (PING, STORE, FIND_NODE, FIND_VALUE)
- Iterative lookup algorithm
- Macula-specific adaptations (realm-scoped DHT, HTTP/3 transport)
- Performance characteristics and comparisons
### Fixed
- Updated documentation to reflect `MACULA_REALM` environment variable usage
- Updated `entrypoint.sh`, `Dockerfile.gateway`, and `config/sys.config` to use `MACULA_REALM`
### Upcoming in v0.7.0
- Architecture improvement: Separation of `macula_connection` into `macula_peer` (high-level mesh API) and `macula_connection` (low-level QUIC transport)
- See `docs/NOMENCLATURE_PROPOSAL_CONNECTION_TO_PEER.md` and `docs/PEER_CONNECTION_SEPARATION_PLAN.md` for details
- Expected timeline: 4-5 weeks after v0.6.0 release
### Migration Guide (0.5.0 → 0.6.0)
If you're using Macula in gateway mode or configuring realm multi-tenancy:
**Before (0.5.0):**
```bash
export GATEWAY_REALM=my-app
```
**After (0.6.0):**
```bash
export MACULA_REALM=my-app
```
**Elixir/Phoenix runtime.exs:**
```elixir
# Before (0.5.0)
System.put_env("GATEWAY_REALM", realm)
# After (0.6.0)
System.put_env("MACULA_REALM", realm)
```
## [0.5.0] - 2025-11-14
### Added
- Initial public release
- HTTP/3 (QUIC) mesh networking platform
- Gateway mode for accepting incoming connections
- Edge peer mode for mesh participation
- Multi-tenancy via realm isolation
- Pub/Sub messaging with wildcard support
- RPC (request/response) patterns
- Service discovery and advertisement
- mDNS local discovery support
- Process registry via gproc
- Comprehensive documentation
### Known Issues
- Gateway mode requires proper TLS certificate configuration
- Certificates must have Subject Alternative Name (SAN) extension
- Docker deployments require proper file ownership (`--chown=app:app`)
---
[0.7.0]: https://github.com/macula-io/macula/compare/v0.6.7...v0.7.0
[0.6.7]: https://github.com/macula-io/macula/compare/v0.6.6...v0.6.7
[0.6.0]: https://github.com/macula-io/macula/compare/v0.5.0...v0.6.0
[0.5.0]: https://github.com/macula-io/macula/releases/tag/v0.5.0