Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,33 @@ All notable changes to Satset will be documented here.

Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), versioned per [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.4.2] - 2026-06-12

> **Wake up babe, new update just dropped**

This release adds explicit packet audiences and a replaceable packet transport.
It also revises the reliable wire path using static and moving payload data,
rather than judging compression from repeated payloads alone.

### Added

- **Server-Owned Groups**: Added `defineGroup()` and `Packet:fireGroup()` for explicit server-managed packet audiences.
- **Server Listener Helper**: Added `Packet:listenServer()` for handlers that prefer `(player, data)` argument order.
- **Packet Transport Interface**: Added an optional transport interface for packet tests and future non-RemoteEvent adapters. Roblox remotes remain the default.
- **Transport Contract Test**: Added a Lune test for packet transport behavior without Roblox Studio.
- **Benchmark Variants**: Added static and moving payload runs. Moving payloads change by frame and event slot.
- **Benchmark Metrics**: Added per-library GC, wire bytes, workload duration, drain time, FPS, and completion data.

### Changed

- **Adaptive Reliable Delta**: General payloads use same-size XOR deltas. Text payloads can stay raw when XOR is not useful, while eligible bitpacked payloads can use a transposed delta layout.
- **Reliable Run Headers**: Repeated packet ids now use a three-byte header for short runs and a five-byte header for long runs.
- **String Array Encoding**: Added a compact repeated-string layout when it produces fewer bytes than the regular array encoding.
- **Compression Profiles**: Schemas now carry general, text, or bitpacked hints into the reliable batching path.
- **Benchmark Report**: Rebuilt the report from `static-benchmark.json` and `moving-benchmark.json`, with separate tables for both payload variants.
- **Benchmark Directory**: Renamed `benchmark/` to `benchmarks/` and updated documentation links.
- **Public Documentation**: Updated README and API guides for Groups, packet transport, adaptive delta behavior, current installation, and the latest benchmark data.

## [0.4.1] - 2026-06-09

This patch fixes how Satset is mapped and packaged. The previous Rojo project
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ For a detailed step-by-step walkthrough of a packet's lifecycle, see the [Archit
Add Satset to your `wally.toml`:

```toml
Satset = "protheeuz/satset@0.4.1"
satset = "protheeuz/satset@0.4.2"
```

Then run `wally install`.
Expand Down
2 changes: 1 addition & 1 deletion benchmarks/Benchmarks.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# [**Satset**](https://github.com/bookek/satset) Networking Benchmarks

**Last updated:** June 12, 2026
**Last updated:** June 12, 2026 (Satset `v0.4.2`)

The Studio benchmark sends 200 events per frame for 600 frames. A complete row sends and receives 120,000 events. The report keeps Roblox's `Stats.DataSendKbps` unit as Kbps.

Expand Down
2 changes: 1 addition & 1 deletion docs/guide/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Add Satset to your `wally.toml`:

```toml
[dependencies]
Satset = "protheeuz/satset@0.4.1"
Satset = "protheeuz/satset@0.4.2"
```

Then run:
Expand Down
2 changes: 1 addition & 1 deletion wally.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "protheeuz/satset"
description = "High-performance, buffer-backed hybrid networking for Roblox with zero-allocation delta synchronization."
version = "0.4.1"
version = "0.4.2"
authors = ["Iqbal F <iqbalfauzien@pm.me", "LVSandals <lvsandals-rbx@pm.me>"]
license = "MIT"
registry = "https://github.com/UpliftGames/wally-index"
Expand Down