You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+8-12Lines changed: 8 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,21 +15,16 @@ FastProto is a high-performance serialization/deserialization **library** design
15
15
## *Design Philosophy*
16
16
17
17
-**Declarative over imperative:** Protocol fields are defined via annotations, making the structure self‑evident so that code doubles as documentation.
18
-
-**Performance with maintainability:** Architectural optimizations such as reflection caching and zero‑copy are built in to keep high throughput without sacrificing readability and maintainability.
18
+
-**Performance with maintainability:** Architectural optimizations such as reflection caching are built in to keep high throughput without sacrificing readability and maintainability.
19
19
-**Grounded in engineering reality:** Supports mixed endianness, bit fields, BCD, CRC and other traditional protocol features to integrate smoothly with existing systems.
20
20
21
21
## *Key Features*
22
22
23
-
-**Annotation-Driven:** Quickly map binary data to Java fields.
24
-
-**Broad Type Support:** Works with primitives, unsigned numbers, strings, time types, arrays and collections.
25
-
-**Flexible Addressing:** Reverse addressing for variable-length packets.
26
-
-**Variable-Length Fields:** Use `lengthRef` to reference a count field; supports variable-length strings/arrays and struct arrays. See [Variable Length and Struct Arrays](docs/variable-length.md).
27
-
-**Dynamic Offset:** Use `offsetRef` to bind a field's offset to a previously decoded numeric field (useful for header-with-pointer formats). See [Dynamic Offset](docs/dynamic-offset.md).
28
-
-**Configurable Byte Order:** Choose big-endian or little-endian to match your protocol.
29
-
-**Custom Formulas:** Use lambdas or classes to transform values during encode/decode.
30
-
-**Checksum/CRC:** Single-annotation `@Checksum` to define start, length and storage offset; built-ins include CRC8 (SMBus, MAXIM), CRC16 (MODBUS, CCITT), CRC32/CRC32C, CRC64 (ECMA/ISO), plus LRC and XOR.
31
-
-**Integrations:** Netty codecs and Kafka Serializer/Deserializer/Serde for drop‑in use. See [Netty Integration](docs/help.html#netty-integration) and [Kafka Integration](docs/help.html#kafka-integration).
32
-
-**Easy APIs:** Multiple APIs tuned for efficiency and reliability.
23
+
-**Annotation‑driven protocol mapping:** Describe binary layouts with simple field annotations instead of manual offset and bit operations.
24
+
-**Rich type & layout support:** Primitives (including unsigned), strings, time types, arrays/collections, variable‑length fields, dynamic offsets and reverse addressing.
25
+
-**Precise control of representation:** Configurable byte/bit order, BCD, bit fields and custom encode/decode formulas.
26
+
-**Built‑in checksum/CRC:** Single `@Checksum` annotation or utility methods covering common CRC and checksum algorithms.
27
+
-**Ecosystem integrations:** Ready‑to‑use Netty codecs and Kafka Serializer/Deserializer/Serde, plus fluent APIs for use without annotations.
33
28
34
29
See the [CHANGELOG](CHANGELOG.md) for recent updates.
35
30
@@ -187,9 +182,10 @@ FastProto supports Java primitive data types, taking into account cross-language
Copy file name to clipboardExpand all lines: docs/dynamic-offset.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,7 @@
1
1
## Dynamic Offset with offsetRef
2
2
3
3
### Overview
4
-
Some formats store an absolute position in a header and place the actual data later in the file. Use `offsetRef` to point a field’s `offset()` to a previously decoded numeric field in the same class. The source field name can be prefixed with `$`.
4
+
Some formats store an absolute position in a header and place the actual data later in the file. Use `offsetRef` to point a field’s `offset()` to a previously decoded numeric field in the same class. The source field name must be prefixed with `$`.
5
5
6
6
### Rules
7
7
- The referenced field must appear earlier in the class and be decoded before the target.
0 commit comments