-
Notifications
You must be signed in to change notification settings - Fork 121
Permalink
Choose a base ref
{{ refName }}
default
Choose a head ref
{{ refName }}
default
Checking mergeability…
Don’t worry, you can still create the pull request.
Comparing changes
Choose two branches to see what’s changed or to start a new pull request.
If you need to, you can also or
learn more about diff comparisons.
Open a pull request
Create a new pull request by comparing changes across two branches. If you need to, you can also .
Learn more about diff comparisons here.
base repository: msgpack/msgpack-ruby
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: master
Could not load branches
Nothing to show
Loading
Could not load tags
Nothing to show
{{ refName }}
default
Loading
...
head repository: msgpack/msgpack-ruby
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: fast-structs
Could not load branches
Nothing to show
Loading
Could not load tags
Nothing to show
{{ refName }}
default
Loading
- 8 commits
- 12 files changed
- 2 contributors
Commits on Dec 10, 2025
-
Add optimized_struct option for fast Struct serialization
Adds a C-level fast path for serializing and deserializing Ruby Struct types, bypassing Ruby proc callbacks entirely. Usage: factory.register_type(0x01, MyStruct, optimized_struct: true) Benefits: - Directly accesses struct fields via RSTRUCT_GET in C - No Ruby method calls for field access - No proc allocation or invocation overhead - Supports both regular and keyword_init structs The wire format is identical to the recursive proc-based approach, ensuring compatibility with existing serialized data. This provides significant performance improvements for applications that serialize many Struct objects.
Configuration menu - View commit details
-
Copy full SHA for 9312864 - Browse repository at this point
Copy the full SHA 9312864View commit details
Commits on Dec 11, 2025
-
Configuration menu - View commit details
-
Copy full SHA for 519b457 - Browse repository at this point
Copy the full SHA 519b457View commit details -
Add ref_tracking option for object deduplication during serialization
When registering an extension type with ref_tracking: true, repeated objects are serialized as back-references instead of being re-encoded. This reduces payload size when the same object appears multiple times. Uses ext type 127 with a compact wire format: - New reference: nil marker followed by the serialized object - Back-reference: positive integer ref_id pointing to earlier object
Configuration menu - View commit details
-
Copy full SHA for 3581be2 - Browse repository at this point
Copy the full SHA 3581be2View commit details -
Configuration menu - View commit details
-
Copy full SHA for 17927ff - Browse repository at this point
Copy the full SHA 17927ffView commit details -
Configuration menu - View commit details
-
Copy full SHA for 40af3f3 - Browse repository at this point
Copy the full SHA 40af3f3View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1c81f0a - Browse repository at this point
Copy the full SHA 1c81f0aView commit details -
Implement positional struct packing and unpacking
Very sligthly slower than naive positional, but work with both positional and keyword structs.
Configuration menu - View commit details
-
Copy full SHA for ed72e7f - Browse repository at this point
Copy the full SHA ed72e7fView commit details -
Reuse the unpackers and freeze the payload
Saves a few allocations. Mostly helps on smaller payloads, as the cost of building the unpacker is quite high.
Configuration menu - View commit details
-
Copy full SHA for edff910 - Browse repository at this point
Copy the full SHA edff910View commit details
Loading
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff master...fast-structs