synurang 0.6.2
synurang: ^0.6.2 copied to clipboard
Flutter FFI + gRPC bridge for bidirectional Go/Dart communication
0.6.2 #
- Dart core recovery: Added
StartGrpcServerOptions,CoreState,CoreRecoveryResult,recoverCoreAsync,getCoreState, andresetCoreStateso apps can explicitly recover the embedded native core after an FFI timeout by resetting Dart helper isolates and issuing nativeStop/Startcalls. - Timeout and shutdown handling: Per-call FFI timeouts now mark the core unhealthy, fail pending requests, close active server/plugin streams, and gate new RPCs with
CoreUnavailableExceptionorCoreRestartRequiredException.FfiClientChannelmaps these recovery errors to gRPCunavailable. - Recovery test coverage: Added a debug-only
HangForRPC plus recovery tests covering core state transitions, concurrentrecoverCoreAsynccallers, lifecycle calls while unhealthy, pending request cleanup, stream cleanup, andrestartRequiredbehavior. - Rust generator implementation: Added
protoc-gen-synurang-ffi-rs, a Rust/prost reimplementation ofprotoc-gen-synurang-ffi, with make targets and parity tests that compare generated output, flag validation, and benchmark runs against the Go generator.
0.6.1 #
- C++ Lite support: Added a zero-dependency C++11 header-only runtime (
cpp/synurang_lite.hpp) andlang=cpp,mode=litecode generation for protobuf messages and FFI service stubs. - C++ Lite protobuf coverage: Generated lite headers now cover imported lite headers, well-known types, maps, repeated and packed fields, optional fields, oneofs, and streaming service helpers without requiring libprotobuf or gRPC.
- C++ generation tests: Expanded C++ generator tests to validate lite header generation for core/cache/native protos and syntax-check the generated headers with
g++.
0.6.0 #
- Swift Lite support: Added zero-dependency Swift runtime packaging, Swift code generation, ProtoLite encoding/decoding, well-known type support, plugin host/stream APIs, and Swift generator/integration/stress tests.
- TypeScript support: Added TypeScript Lite schema/code generation and TypeScript FFI client generation, with generator coverage for enums, services, streaming methods, and well-known types.
- Plugin cancellation callbacks: Added
on_cancelsupport for Rust and C++ plugin servers with regression tests covering cancellation callback behavior.
0.5.10 #
- C# Lite and stream worker fixes: Added C# Lite support for .NET 4.0, fixed
internalvisibility andrepeated int32code generation issues, and stabilized plugin stream scheduling with a dedicated worker plus regression tests.
0.5.6 #
- Concurrency and packaging fixes: Hardened plugin host/stream teardown across hosts, improved Android debug AAR packaging, and added Java/Rust host test coverage.
0.5.5 #
- TypeScript codegen: Added lightweight TypeScript schema constants for enums, field numbers, and full gRPC method paths, with generator coverage tests.
0.5.4 #
- Structured FFI errors: Replaced
PluginErrorwithFfiErrorcarryingcode,message, andgrpc_codefields across all 6 languages (Go, Dart, C++, Rust, Java, C#). - New wire format: Unary uses
resp_len < 0for errors (payload is serializedcore.v1.Error); stream usesstatus < 0. Removes the old status-byte prefix overhead. - Plugin stream interfaces: Go plugin server codegen now emits minimal
PluginStreaminterfaces instead ofgrpc.ServerStream, removing thegoogle.golang.org/grpc/metadatadependency from plugin code. - gRPC status extraction: New
pkg/ffierrorpackage extracts structured errors from gRPC status details via reflection, avoiding a hard gRPC dependency.
0.5.0 #
- WASM & Rust native: Added WASM and Rust native support.
- ActiveX: Added ActiveX support.
0.4.0 #
- C# support: Added full support for C# via pure managed interop (NativeLibrary + Marshal).
- Pull-based C ABI: Dart plugin host with pull-based C ABI support for streaming.
0.3.0 #
- FFI without gRPC dependency: FFI transport layer no longer requires gRPC as a dependency.
- Android/Java support: Added full support for Android and Java via JNI.
- Process Mode improvements: Enhanced process mode functionality.
0.2.0 #
- Process Mode: Support for parent-child IPC via socketpair (Unix) and Named Pipes (Windows).
- Multi-language Support: Full support for C++ and Rust (including streaming) via FFI and Process Mode.
0.1.9 #
- In-process microservice (FFI + shared library).
- Apply template.
0.1.8 #
- Add runtime library and Go-to-Go FFI support.
0.1.7 #
- Add support for Android, iOS, macOS, and Windows platforms in pubspec.yaml and project structure.
0.1.6 #
- Fix:
protoc-gen-synurang-ffinow correctly mapsgoogle/protobuf/imports topackage:protobuf/well_known_types/. - Fix: Correct Go/Dart module paths in example code and proto definitions + dart_package option
0.1.5 #
- Include Dart generated files in the package.
0.1.4 #
- Fix internal import paths to use GitHub module path.
0.1.3 #
- Include generated Go code for remote usage.
0.1.2 #
- Fix go.mod configuration.
0.1.1 #
- Fix link in documentation.
0.1.0 #
- Initial release of
synurang, a Flutter FFI + gRPC bridge for bidirectional Go/Dart communication.