This is an automated email from the ASF dual-hosted git repository. chaokunyang pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/fory-site.git
commit c83707ea734984f39a1b011dd93bd61792c2f278 Author: chaokunyang <[email protected]> AuthorDate: Thu May 14 15:48:40 2026 +0000 🔄 synced local 'docs/specification/' with remote 'docs/specification/' --- docs/specification/xlang_implementation_guide.md | 34 ------------------------ 1 file changed, 34 deletions(-) diff --git a/docs/specification/xlang_implementation_guide.md b/docs/specification/xlang_implementation_guide.md index 6fd32e15d8..ba1ee0a9c3 100644 --- a/docs/specification/xlang_implementation_guide.md +++ b/docs/specification/xlang_implementation_guide.md @@ -107,40 +107,6 @@ Generated and hand-written serializers should treat these contexts as the only source of operation-local services. Serializers must not keep ambient runtime state in thread locals, globals, or serializer instance fields. -### Static generated serializer discovery - -The Java runtime discovers build-time generated xlang serializers through -`StaticGeneratedSerializerProvider` service providers. A provider maps a target -class to the generated serializer class and construction functions. Runtime -registration still belongs to the user: users register target classes and -their IDs or names with normal Fory registration APIs; generated providers must -not choose user IDs or registered names. - -Generated-name `Class.forName` lookup is not the owner for static serializer -discovery. Service-provider lookup is required for Android/R8 and is preferred -for Kotlin classes. Kotlin xlang structs require a KSP-generated SPI mapping; -missing static serializer metadata is a configuration error. When a registered -type is a Kotlin class, or when the runtime is Android, the Java type resolver -checks the static provider registry first. The static provider registry is -resolver-owned shared metadata: it is held by `SharedRegistry`, not by -serializer classes or by individual `TypeResolver` instances. The registry must -be GraalVM build-time initialized so build-time `Fory` instances can embed their -shared resolver metadata in the native-image heap without runtime-initialization -conflicts. Generated Java annotation-processor providers and Kotlin KSP -providers use separate marker service descriptors under -`StaticGeneratedSerializerProvider` so mixed Java/Kotlin artifacts can package -both provider lists without resource overwrite. The registry must load -providers visible from the resolver class loader, the target class loader, and -the context class loader, so generated serializers packaged beside plugin or -child-loader classes can be found. - -Static generated serializers must expose descriptor metadata through an -instance `getGeneratedDescriptors()` method and must have a provider-callable -no-argument construction path for descriptor reads. That construction path is -not a user registration API. The runtime creates the descriptor instance from -the provider; it does not parse Kotlin metadata or Java fields at runtime to -recover the generated schema. - ### `WriteContext` `WriteContext` owns all write-side per-operation state: --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
