Update README
All checks were successful
Run Gosec / tests (push) Successful in 1m6s
Go Build Multi-Platform / build (amd64, darwin) (push) Successful in 51s
Go Build Multi-Platform / build (amd64, freebsd) (push) Successful in 50s
Go Build Multi-Platform / build (amd64, windows) (push) Successful in 54s
Go Build Multi-Platform / build (arm, freebsd) (push) Successful in 52s
Go Build Multi-Platform / build (amd64, linux) (push) Successful in 57s
Go Build Multi-Platform / build (arm, linux) (push) Successful in 47s
Go Build Multi-Platform / build (arm64, freebsd) (push) Successful in 43s
Go Build Multi-Platform / build (arm, windows) (push) Successful in 48s
Go Build Multi-Platform / build (arm64, darwin) (push) Successful in 46s
Go Build Multi-Platform / build (arm64, linux) (push) Successful in 51s
Go Build Multi-Platform / build (arm64, windows) (push) Successful in 49s
Go Test Multi-Platform / Test (ubuntu-latest, arm64) (push) Successful in 46s
Go Build Multi-Platform / Create Release (push) Has been skipped
Go Test Multi-Platform / Test (ubuntu-latest, amd64) (push) Successful in 1m42s
Go Revive Lint / lint (push) Successful in 54s
All checks were successful
Run Gosec / tests (push) Successful in 1m6s
Go Build Multi-Platform / build (amd64, darwin) (push) Successful in 51s
Go Build Multi-Platform / build (amd64, freebsd) (push) Successful in 50s
Go Build Multi-Platform / build (amd64, windows) (push) Successful in 54s
Go Build Multi-Platform / build (arm, freebsd) (push) Successful in 52s
Go Build Multi-Platform / build (amd64, linux) (push) Successful in 57s
Go Build Multi-Platform / build (arm, linux) (push) Successful in 47s
Go Build Multi-Platform / build (arm64, freebsd) (push) Successful in 43s
Go Build Multi-Platform / build (arm, windows) (push) Successful in 48s
Go Build Multi-Platform / build (arm64, darwin) (push) Successful in 46s
Go Build Multi-Platform / build (arm64, linux) (push) Successful in 51s
Go Build Multi-Platform / build (arm64, windows) (push) Successful in 49s
Go Test Multi-Platform / Test (ubuntu-latest, arm64) (push) Successful in 46s
Go Build Multi-Platform / Create Release (push) Has been skipped
Go Test Multi-Platform / Test (ubuntu-latest, amd64) (push) Successful in 1m42s
Go Revive Lint / lint (push) Successful in 54s
This commit is contained in:
171
README.md
171
README.md
@@ -1,71 +1,202 @@
|
|||||||
# Reticulum-Go
|
# Reticulum-Go
|
||||||
|
|
||||||
A Go implementation of the [Reticulum Network Stack](https://github.com/markqvist/Reticulum).
|
A high-performance Go implementation of the [Reticulum Network Stack](https://github.com/markqvist/Reticulum)
|
||||||
|
|
||||||
## Goals
|
## Project Goals:
|
||||||
|
|
||||||
- To be fully compatible with the original Python implementation.
|
- **Full Protocol Compatibility**: Maintain complete interoperability with the Python reference implementation
|
||||||
- Support for a broader range of platforms and architectures legacy and modern.
|
- **Cross-Platform Support**: Support for legacy and modern platforms across multiple architectures
|
||||||
- Additional privacy and security features.
|
- **Performance**: Leverage Go's concurrency model and runtime for improved throughput and latency
|
||||||
|
- **More Privacy and Security**: Additional privacy and security features beyond the base specification
|
||||||
|
|
||||||
## Development
|
## Prerequisites
|
||||||
|
|
||||||
### Prerequisites
|
|
||||||
|
|
||||||
- Go 1.24 or later
|
- Go 1.24 or later
|
||||||
- [go-task](https://taskfile.dev/)
|
- [Task](https://taskfile.dev/) for build automation
|
||||||
|
|
||||||
Might need `alias task='go-task'` in your shell to use it as `task` instead of `go-task`.
|
Note: You may need to set `alias task='go-task'` in your shell configuration to use `task` instead of `go-task`.
|
||||||
|
|
||||||
### Build
|
### Nix
|
||||||
|
|
||||||
|
If you have Nix installed, you can use the development shell which automatically provides all dependencies including Task:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
nix develop
|
||||||
|
```
|
||||||
|
|
||||||
|
This will enter a development environment with Go and Task pre-configured.
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
### Building the Binary
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
task build
|
task build
|
||||||
```
|
```
|
||||||
|
|
||||||
### Run
|
The compiled binary will be located in `bin/reticulum-go`.
|
||||||
|
|
||||||
|
### Running the Application
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
task run
|
task run
|
||||||
```
|
```
|
||||||
|
|
||||||
### Test
|
### Running Tests
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
task test
|
task test
|
||||||
```
|
```
|
||||||
|
|
||||||
### Format Code
|
## Development
|
||||||
|
|
||||||
|
### Code Quality
|
||||||
|
|
||||||
|
Format code:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
task fmt
|
task fmt
|
||||||
```
|
```
|
||||||
|
|
||||||
### Run All Checks
|
Run static analysis checks (formatting, vet, linting):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
task check
|
task check
|
||||||
```
|
```
|
||||||
|
|
||||||
## Embedded systems and WebAssembly
|
### Testing
|
||||||
|
|
||||||
For building for WebAssembly and embedded systems, see the [tinygo branch](https://git.quad4.io/Networks/Reticulum-Go/src/branch/tinygo/). Requires TinyGo 0.37.0+.
|
Run all tests:
|
||||||
|
|
||||||
Note: I am not actively working on webassembly support at the moment.
|
```bash
|
||||||
|
task test
|
||||||
|
```
|
||||||
|
|
||||||
|
Run short tests only:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task test-short
|
||||||
|
```
|
||||||
|
|
||||||
|
Generate coverage report:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task coverage
|
||||||
|
```
|
||||||
|
|
||||||
|
### Benchmarking
|
||||||
|
|
||||||
|
Run benchmarks with standard GC:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task bench
|
||||||
|
```
|
||||||
|
|
||||||
|
Run benchmarks with experimental Green Tea GC:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task bench-experimental
|
||||||
|
```
|
||||||
|
|
||||||
|
Compare both GC implementations:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task bench-compare
|
||||||
|
```
|
||||||
|
|
||||||
|
## Tasks
|
||||||
|
|
||||||
|
The project uses [Task](https://taskfile.dev/) for all development and build operations.
|
||||||
|
|
||||||
|
```
|
||||||
|
| Task | Description |
|
||||||
|
|---------------------|------------------------------------------------------|
|
||||||
|
| default | Show available tasks |
|
||||||
|
| all | Clean, download dependencies, build and test |
|
||||||
|
| build | Build release binary (stripped, static) |
|
||||||
|
| debug | Build debug binary |
|
||||||
|
| build-experimental | Build with experimental Green Tea GC (Go 1.25+) |
|
||||||
|
| experimental | Alias for build-experimental |
|
||||||
|
| release | Build stripped static binary for release |
|
||||||
|
| fmt | Format Go code |
|
||||||
|
| fmt-check | Check if code is formatted (CI-friendly) |
|
||||||
|
| vet | Run go vet |
|
||||||
|
| lint | Run revive linter |
|
||||||
|
| scan | Run gosec security scanner |
|
||||||
|
| check | Run fmt-check, vet, and lint |
|
||||||
|
| bench | Run benchmarks with standard GC |
|
||||||
|
| bench-experimental | Run benchmarks with experimental GC |
|
||||||
|
| bench-compare | Run benchmarks with both GC settings |
|
||||||
|
| clean | Remove build artifacts |
|
||||||
|
| test | Run all tests |
|
||||||
|
| test-short | Run short tests only |
|
||||||
|
| coverage | Generate test coverage report |
|
||||||
|
| deps | Download and verify dependencies |
|
||||||
|
| mod-tidy | Tidy go.mod file |
|
||||||
|
| mod-verify | Verify dependencies |
|
||||||
|
| build-linux | Build for Linux (amd64, arm64, arm, riscv64) |
|
||||||
|
| build-all | Build for all Linux architectures |
|
||||||
|
| build-wasm | Build WebAssembly binary with standard Go compiler |
|
||||||
|
| run | Run with go run |
|
||||||
|
| tinygo-build | Build binary with TinyGo compiler |
|
||||||
|
| tinygo-wasm | Build WebAssembly binary with TinyGo |
|
||||||
|
| install | Install dependencies |
|
||||||
|
|
||||||
|
example: task build
|
||||||
|
```
|
||||||
|
|
||||||
|
## Cross-Platform Builds
|
||||||
|
|
||||||
|
### Linux Builds
|
||||||
|
|
||||||
|
Build for all Linux architectures:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task build-all
|
||||||
|
```
|
||||||
|
|
||||||
|
Build for specific Linux architecture:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task build-linux
|
||||||
|
```
|
||||||
|
|
||||||
|
## Embedded Systems and WebAssembly
|
||||||
|
|
||||||
|
For building for WebAssembly and embedded systems, see the [tinygo branch](https://git.quad4.io/Networks/Reticulum-Go/src/branch/tinygo/). Requires TinyGo 0.37.0+.
|
||||||
|
|
||||||
|
Note: WebAssembly support is not actively maintained at this time.
|
||||||
|
|
||||||
|
Build WebAssembly binary with standard Go compiler:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
task build-wasm
|
||||||
|
```
|
||||||
|
|
||||||
|
Build with TinyGo:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
task tinygo-build
|
task tinygo-build
|
||||||
|
```
|
||||||
|
|
||||||
|
Build WebAssembly binary with TinyGo:
|
||||||
|
|
||||||
|
```bash
|
||||||
task tinygo-wasm
|
task tinygo-wasm
|
||||||
```
|
```
|
||||||
|
|
||||||
### Experimental Features
|
## Experimental Features
|
||||||
|
|
||||||
Build with experimental Green Tea GC (Go 1.25+):
|
### Green Tea Garbage Collector
|
||||||
|
|
||||||
|
Build with experimental Green Tea GC (requires Go 1.25+):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
task build-experimental
|
task build-experimental
|
||||||
```
|
```
|
||||||
|
|
||||||
|
This enables the experimental garbage collector for performance evaluation and testing.
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
This project is licensed under the [0BSD](LICENSE) license.
|
This project is licensed under the [0BSD](LICENSE) license.
|
||||||
Reference in New Issue
Block a user