Skip to content

fix(core): bump Nino to fix Dictionary serialization in HybridCLR - #627

Merged
JasonXuDeveloper merged 2 commits into
masterfrom
fix/nino-dictionary-hybridclr
Feb 8, 2026
Merged

fix(core): bump Nino to fix Dictionary serialization in HybridCLR#627
JasonXuDeveloper merged 2 commits into
masterfrom
fix/nino-dictionary-hybridclr

Conversation

@JasonXuDeveloper

Copy link
Copy Markdown
Owner

Summary

  • Bumps Nino from 4.0.0-preview.143 to 4.0.0-preview.147 which fixes ArrayTypeMismatchException when serializing [NinoType] classes containing Dictionary fields under HybridCLR's interpreter

Root Cause

Nino's generated Dictionary serializer used Unsafe.As<Dictionary, DictionaryView> to access internal _entries. HybridCLR's ldelema instruction enforces strict runtime type checking, detecting DictionaryView.EntryDictionary.Entry and throwing ArrayTypeMismatchException.

Fixes#621
Ref: JasonXuDeveloper/Nino#172

Test plan

  • Build to Android with HybridCLR hot update
  • Serialize/deserialize a [NinoType] class with Dictionary fields
  • Verify no ArrayTypeMismatchException

🤖 Generated with Claude Code

…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>

CopilotAI left a comment

Copy link
Copy Markdown

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.nino from 4.0.0-preview.143 to 4.0.0-preview.147 in the Unity manifest.json.
  • Update packages-lock.json to lock Nino to 4.0.0-preview.147.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

FileDescription
UnityProject/Packages/manifest.jsonPins Nino to 4.0.0-preview.147 so the project consumes the HybridCLR serialization fix.
UnityProject/Packages/packages-lock.jsonLocks the resolved Nino version to 4.0.0-preview.147 for deterministic restores.

Comment threadUnityProject/Packages/manifest.json
Comment threadUnityProject/Packages/packages-lock.json
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>

@github-actionsgithub-actionsBot left a comment

Copy link
Copy Markdown

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).

@github-actionsgithub-actionsBot left a comment

Copy link
Copy Markdown

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).

@JasonXuDeveloper
JasonXuDeveloper enabled auto-merge (squash) February 8, 2026 00:22
@github-actions

Copy link
Copy Markdown

Unity Test Results

EditMode: All tests passed
PlayMode: All tests passed

Unity Version: 2022.3.55f1
Project Path: UnityProject

✅ All tests passed! The PR is ready for review.

View workflow run

Click here to view the full workflow run

@JasonXuDeveloper
JasonXuDeveloper merged commit 7193761 into masterFeb 8, 2026
20 checks passed
@JasonXuDeveloper
JasonXuDeveloper deleted the fix/nino-dictionary-hybridclr branch February 8, 2026 00:27
@codecov

codecovBot commented Feb 8, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.91%. Comparing base (2ea9238) to head (edc3fd8).
⚠️ Report is 4 commits behind head on master.

Additional details and impacted files

Impacted file tree graph

@@ 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 
FlagCoverage Δ
ui95.35% <ø> (+2.31%)⬆️
util93.19% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ArrayTypeMismatchException when serializing nested Dictionary on Android device (after HybridCLR hot update)

2 participants

@JasonXuDeveloper