The GitHub Actions job "npm_and_yarn in /javascript for uuid - Update #1334954860" on fory.git/main has failed. Run started by GitHub user dependabot[bot] (triggered by dependabot[bot]).
Head commit for run: 1d2bea83018977405a9f0ace8db5fa774a6709bf / Shawn Yang <[email protected]> feat(dart): support dart web platform (#3608) ## Why? Dart web builds use JavaScript number semantics, so raw Dart `int` cannot safely represent the full 64-bit value space used by Fory xlang integer encodings. The Dart runtime needs browser-compatible buffer, generated serializer, and 64-bit wrapper implementations that preserve wire compatibility instead of silently corrupting JS-unsafe values. ## What does this PR do? - Adds Dart web support through conditional native/web implementations for `Buffer`, generated cursors, and `Int64` / `Uint64` value and list wrappers. - Updates code generation and serializers to handle full-range signed and unsigned 64-bit fields on web, while keeping Dart `int` fast paths for JS-safe values. - Adds explicit range checks so web builds reject JS-unsafe Dart `int` conversions instead of writing or reading imprecise bytes. - Extends Dart serializer, buffer, generated-field, numeric-wrapper, typed-array, and time tests for 64-bit edge cases and browser behavior. - Adds Chrome test coverage to CI with `dart test -p chrome` for the Dart package. - Documents Dart web support, 64-bit integer rules, custom serializer guidance, and troubleshooting steps. ## Related issues Closes #3600 ## AI Contribution Checklist - [ ] Substantial AI assistance was used in this PR: `yes` / `no` - [ ] If `yes`, I included a completed [AI Contribution Checklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs) in this PR description and the required `AI Usage Disclosure`. - [ ] If `yes`, my PR description includes the required `ai_review` summary and screenshot evidence of the final clean AI review results from both fresh reviewers on the current PR diff or current HEAD after the latest code changes. ## Does this PR introduce any user-facing change? Yes. Dart users can now use generated serializers and manual serializers on web/browser targets. Full-range 64-bit values should use `Int64` or `Uint64`; Dart `int` fields remain limited to JS-safe values on web. - [x] Does this PR introduce any public API change? - [ ] Does this PR introduce any binary protocol compatibility change? ## Benchmark <img width="4200" height="900" alt="throughput" src="https://github.com/user-attachments/assets/ca422bc6-5345-4560-a35a-2678f4c54b9c" /> | Datatype | Operation | Fory TPS | Protobuf TPS | Fastest | | ---------------- | ----------- | --------: | -----------: | ------------ | | Struct | Serialize | 5,041,693 | 2,073,839 | fory (2.43x) | | Struct | Deserialize | 6,395,290 | 4,991,881 | fory (1.28x) | | Sample | Serialize | 1,783,688 | 552,140 | fory (3.23x) | | Sample | Deserialize | 2,124,197 | 934,794 | fory (2.27x) | | MediaContent | Serialize | 952,498 | 438,419 | fory (2.17x) | | MediaContent | Deserialize | 1,649,039 | 737,340 | fory (2.24x) | | StructList | Serialize | 1,945,119 | 399,007 | fory (4.87x) | | StructList | Deserialize | 2,119,403 | 764,832 | fory (2.77x) | | SampleList | Serialize | 475,413 | 52,512 | fory (9.05x) | | SampleList | Deserialize | 508,939 | 116,236 | fory (4.38x) | | MediaContentList | Serialize | 224,925 | 84,860 | fory (2.65x) | | MediaContentList | Deserialize | 387,070 | 154,392 | fory (2.51x) | Report URL: https://github.com/apache/fory/actions/runs/24831670794 With regards, GitHub Actions via GitBox --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
