-
Notifications
You must be signed in to change notification settings - Fork 340
fix(core): bump Nino to fix Dictionary serialization in HybridCLR #627
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
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>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Auto-approved: Copilot review found no issues and Unity Tests passed (or were skipped for non-code changes).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Auto-approved: Copilot review found no issues and Unity Tests passed (or were skipped for non-code changes).
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:
|
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