fix(core): bump Nino to fix Dictionary serialization in HybridCLR#627
Merged
JasonXuDeveloper merged 2 commits intomasterfrom Feb 8, 2026
Merged
fix(core): bump Nino to fix Dictionary serialization in HybridCLR#627JasonXuDeveloper merged 2 commits intomasterfrom
JasonXuDeveloper merged 2 commits intomasterfrom
Conversation
…tion in HybridCLR Nino's generated Dictionary serializer used `Unsafe.As<Dictionary, DictionaryView>` to access internal `_entries`, which throws `ArrayTypeMismatchException` under HybridCLR's interpreter due to strict `ldelema` type checking. Fixes #621 Ref: JasonXuDeveloper/Nino#172 Signed-off-by: JasonXuDeveloper <jason@xgamedev.net> Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: JasonXuDeveloper - 傑 <jason@xgamedev.net>
2 tasks
There was a problem hiding this comment.
Pull request overview
Updates the Unity project’s Nino package version to pick up an upstream fix for ArrayTypeMismatchException during Dictionary serialization under HybridCLR (Android interpreter path).
Changes:
- Bump
com.jasonxudeveloper.ninofrom4.0.0-preview.143to4.0.0-preview.147in the Unitymanifest.json. - Update
packages-lock.jsonto lock Nino to4.0.0-preview.147.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| UnityProject/Packages/manifest.json | Pins Nino to 4.0.0-preview.147 so the project consumes the HybridCLR serialization fix. |
| UnityProject/Packages/packages-lock.json | Locks the resolved Nino version to 4.0.0-preview.147 for deterministic restores. |
Update the JEngine.Core package dependency and its lockfile entry from 4.0.0-preview.137 to 4.0.0-preview.147 to match the project manifest, ensuring downstream consumers get the HybridCLR fix. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: JasonXuDeveloper - 傑 <jason@xgamedev.net>
Unity Test Results✅ EditMode: All tests passed Unity Version: 2022.3.55f1 ✅ All tests passed! The PR is ready for review. View workflow run |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #627 +/- ##
==========================================
+ Coverage 93.08% 94.91% +1.83%
==========================================
Files 68 70 +2
Lines 9480 10431 +951
==========================================
+ Hits 8824 9901 +1077
+ Misses 656 530 -126
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
4.0.0-preview.143to4.0.0-preview.147which fixesArrayTypeMismatchExceptionwhen serializing[NinoType]classes containingDictionaryfields under HybridCLR's interpreterRoot Cause
Nino's generated Dictionary serializer used
Unsafe.As<Dictionary, DictionaryView>to access internal_entries. HybridCLR'sldelemainstruction enforces strict runtime type checking, detectingDictionaryView.Entry≠Dictionary.Entryand throwingArrayTypeMismatchException.Fixes #621
Ref: JasonXuDeveloper/Nino#172
Test plan
[NinoType]class withDictionaryfieldsArrayTypeMismatchException🤖 Generated with Claude Code