You are viewing a plain text version of this content. The canonical link for it is here.
Posted to gsoc@community.apache.org by "Chaokun Yang (Jira)" <ji...@apache.org> on 2026/02/20 07:42:00 UTC

[jira] [Updated] (GSOC-319) Standard Fory Row Format for Go, Swift, Dart, and JavaScript

     [ https://issues.apache.org/jira/browse/GSOC-319?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Chaokun Yang updated GSOC-319:
------------------------------
    Summary: Standard Fory Row Format for Go, Swift, Dart, and JavaScript  (was: Implement Standard Fory Row Format for Go, Swift, Dart, and JavaScript)

> Standard Fory Row Format for Go, Swift, Dart, and JavaScript
> ------------------------------------------------------------
>
>                 Key: GSOC-319
>                 URL: https://issues.apache.org/jira/browse/GSOC-319
>             Project: Comdev GSOC
>          Issue Type: New Feature
>            Reporter: Chaokun Yang
>            Priority: Major
>              Labels: fory, gsoc2026, mentor, python
>
> {*}Description{*}:
> Apache Fory already defines a cross-language row format and has standard row format implementations in Java, C++, and Python. This task adds standard row format support for Go, Swift, Dart, and JavaScript based on docs/specification/row_format_spec.md.
> The implementation must follow the standard row format rules exactly, including 8-byte alignment, null bitmap behavior, fixed 8-byte field slots, relative offset plus size encoding for variable-width fields, and deterministic padding behavior.
> Compact row format is explicitly out of scope for this task.
> *Primary specification:*
> docs/specification/row_format_spec.md
> *Expected outcomes:*
> 1. Add standard row format read and write support in Go runtime.
> 2. Add standard row format read and write support in Swift runtime.
> 3. Add standard row format read and write support in Dart runtime.
> 4. Add standard row format read and write support in JavaScript runtime.
> 5. Implement standard row layout support for rows, arrays, maps, and nested structs according to the spec.
> 6. Ensure random field access without full object deserialization for supported field types.
> 7. Add clear API entry points for encoding typed data to row format and decoding or field-accessing from row format.
> 8. Update language guides and developer docs for row format usage and constraints.
> *Required compatibility and test scope:*
> 1. Add per-language unit tests for null bitmap handling, fixed-width fields, variable-width offset and size encoding, alignment, and padding.
> 2. Add deterministic binary tests to verify encoded bytes for representative schemas.
> 3. Add cross-language compatibility tests against existing standard row format implementations, with Java as required reference endpoint.
> 4. Add interoperability tests for each new language reading rows produced by Java and writing rows that Java can read.
> 5. Add map and nested struct compatibility cases, not only primitive fields.
> 6. Add CI coverage for all new tests so regressions fail CI automatically.
> *Non-goals:*
> 1. Compact row format implementation.
> 2. Protocol or wire format changes outside current standard row format specification.
> 3. Unrelated serialization runtime features not required for standard row format support.
> *Skills:*
> Go, Swift, Dart, JavaScript or TypeScript, binary format implementation, compiler or runtime internals, cross-language compatibility testing, performance-focused engineering.
> {*}Difficulty{*}:
> Hard.
> Project size:
> Preferred 350 hours.
> *Potential mentors:*
> Chaokun Yang, Weipeng Wang.
> *Source links:*
> https://github.com/apache/fory/tree/main/docs/specification
> https://github.com/apache/fory/blob/main/docs/specification/row_format_spec.md
> https://github.com/apache/fory/tree/main/go
> https://github.com/apache/fory/tree/main/swift
> https://github.com/apache/fory/tree/main/dart
> https://github.com/apache/fory/tree/main/javascript



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: gsoc-unsubscribe@community.apache.org
For additional commands, e-mail: gsoc-help@community.apache.org