Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add specialized serializers for Kotlin #683

Open
Tracked by #681
chaokunyang opened this issue Jul 18, 2023 · 0 comments
Open
Tracked by #681

Add specialized serializers for Kotlin #683

chaokunyang opened this issue Jul 18, 2023 · 0 comments
Labels
enhancement New feature or request good first issue Good for newcomers java

Comments

@chaokunyang
Copy link
Collaborator

No description provided.

@chaokunyang chaokunyang changed the title Add specialized serializer for Kotlin Add specialized serializers for Kotlin Jul 18, 2023
@chaokunyang chaokunyang added enhancement New feature or request java labels Jul 18, 2023
@chaokunyang chaokunyang added the good first issue Good for newcomers label Nov 2, 2023
chaokunyang added a commit that referenced this issue Oct 14, 2024
…sts (#1877)



## What does this PR do?

This PR adds a base project for Kotlin on the JVM.
- It adds a pom.xml based on the java project.
- Adds a Serializer class that registers base collection classes not
covered by the JVM.
- Adds code to test all documented collections in the kotlin stdlib via
TestNG.
- Adds register and adds serializers for EmptyList, EmptySet, EmptyMap
classes.
- This PR does not handle kotlin `withDefault` wrapper classes, as that
requires serializing arbitrary lambdas.

## Related issues

- #683

## Does this PR introduce any user-facing change?

This PR creates a new fury-kotlin JAR, no documentation yet from the
main project.

- [ ] Does this PR introduce any public API change?
- [ ] Does this PR introduce any binary protocol compatibility change?

## Benchmark
N/A

---------

Co-authored-by: Shawn Yang <chaokunyang@apache.org>
chaokunyang added a commit that referenced this issue Oct 16, 2024
<!--
**Thanks for contributing to Fury.**

**If this is your first time opening a PR on fury, you can refer to
[CONTRIBUTING.md](https://github.com/apache/fury/blob/main/CONTRIBUTING.md).**

Contribution Checklist

- The **Apache Fury (incubating)** community has restrictions on the
naming of pr titles. You can also find instructions in
[CONTRIBUTING.md](https://github.com/apache/fury/blob/main/CONTRIBUTING.md).

- Fury has a strong focus on performance. If the PR you submit will have
an impact on performance, please benchmark it first and provide the
benchmark result here.
-->

## What does this PR do?

This PR adds unsigned primitive support to Kotlin Fury.
It also adds tests for the standard kotlin primitives(supported by fury
Java), nullable primitive tests, boundary tests for unsigned
serializers.

## Related issues
#683

## Does this PR introduce any user-facing change?

Yes it adds Unsigned support for Kotlin. There's documentation new issue
(should add something to document Kotlin!)

- [ ] Does this PR introduce any public API change?
- [ ] Does this PR introduce any binary protocol compatibility change?

## Benchmark
N/A

---------

Co-authored-by: Shawn Yang <chaokunyang@apache.org>
chaokunyang pushed a commit that referenced this issue Oct 19, 2024
…ings (#1891)

<!--
**Thanks for contributing to Fury.**

**If this is your first time opening a PR on fury, you can refer to
[CONTRIBUTING.md](https://github.com/apache/fury/blob/main/CONTRIBUTING.md).**

Contribution Checklist

- The **Apache Fury (incubating)** community has restrictions on the
naming of pr titles. You can also find instructions in
[CONTRIBUTING.md](https://github.com/apache/fury/blob/main/CONTRIBUTING.md).

- Fury has a strong focus on performance. If the PR you submit will have
an impact on performance, please benchmark it first and provide the
benchmark result here.
-->

## What does this PR do?

This PR adds tests for serializing/deserializing:
- Strings (same as Java)
- Primitive arrays in Kotlin (same as Java)
- Array<T> in kotlin (same as Java)
- Unsigned arrays in kotlin - `UByteArray`, `UIntArray`, `UShortArray`,
`ULongArray`

Unsigned arrays in kotlin are currently marked experimental, and are
subject to API changes (hence the annotations needed to suppress those
warnings).

These types are implemented as a view over the signed arrays e.g.
UByteArray is a view over ByteArray with contents reinterpreted as
UByte, so serializers. The current implementation delegate to existing
serializers for corresponding signed types.

The xlang type id is set to LIST for unsigned types.

## Related issues

#683

<!--
Is there any related issue? Please attach here.

- #xxxx0
- #xxxx1
- #xxxx2
-->

## Does this PR introduce any user-facing change?

Yes. Unsigned primitives no longer need to be registered for
`fury-kotlin`.

- [ ] Does this PR introduce any public API change?
- [ ] Does this PR introduce any binary protocol compatibility change?

## Benchmark
N/A
chaokunyang pushed a commit that referenced this issue Oct 24, 2024
…n stdlib (#1901)



## What does this PR do?

This PR adds tests and covers built-in classes from the kotlin stdlib.

Two specific serializers are added for builtins:
1) Duration
2) Uuid

## Related issues

#683

## Does this PR introduce any user-facing change?

Adds builtin types for kotlin.

## Benchmark

N/A
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request good first issue Good for newcomers java
Projects
None yet
Development

No branches or pull requests

1 participant