Skip to content

Add Flow<DataClass> support to FFM bridge generator#2

Merged
kdroidFilter merged 3 commits intomainfrom
feat/flow-dataclass-support
Mar 29, 2026
Merged

Add Flow<DataClass> support to FFM bridge generator#2
kdroidFilter merged 3 commits intomainfrom
feat/flow-dataclass-support

Conversation

@kdroidFilter
Copy link
Copy Markdown
Owner

Summary

  • Plugin: Support DATA_CLASS as Flow element type in both NativeBridgeGenerator and FfmProxyGenerator
  • Native side: Generates per-DC reader bridges (flowdc_{Name}_read) using StableRef + out-params pattern
  • JVM side: Decodes DC fields from handle via generated FLOWDC_*_READ_HANDLE method handles
  • GraalVM: Automatically registers downcall descriptors for reader bridges in reachability metadata
  • Examples: Added memoryFlow() to systeminfo, and pointFlow/namedValueFlow/taggedPointFlow/calcResultFlow/rectFlow to calculator
  • Tests: 30+ new tests covering simple DC, nested DC, DC with String fields, DC with enum fields, empty/single/large flows, error handling, concurrency, and cross-feature interactions

Test plan

  • ./gradlew :examples:calculator:jvmTest — all flow DC tests pass
  • ./gradlew :examples:systeminfo:compileKotlinLinuxX64 :examples:systeminfo:compileKotlinJvm — systeminfo builds
  • Verify generated bridges contain flowdc_*_read functions
  • Verify GraalVM reachability-metadata.json includes reader bridge downcall descriptors

Support data classes as Flow element types by generating per-DC reader
bridges (StableRef-based serialization with out-params). Includes nested
DC support (TaggedPoint, Rect) and comprehensive test coverage.
@kdroidFilter kdroidFilter merged commit 556cef8 into main Mar 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant