Skip to content

Commit

Permalink
chore: bump release version to 0.9.0 (#1940)
Browse files Browse the repository at this point in the history
## What does this PR do?

bump release version to 0.9.0
## Related issues

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

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

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

<!--
If any user-facing interface changes, please [open an
issue](https://github.com/apache/fury/issues/new/choose) describing the
need to do so and update the document if necessary.
-->

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

## Benchmark

<!--
When the PR has an impact on performance (if you don't know whether the
PR will have an impact on performance, you can submit the PR first, and
if it will have impact on performance, the code reviewer will explain
it), be sure to attach a benchmark data here.
-->
  • Loading branch information
chaokunyang authored Nov 10, 2024
1 parent d1eecf0 commit 0189c93
Show file tree
Hide file tree
Showing 19 changed files with 83 additions and 40 deletions.
25 changes: 18 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
## Features

- **Multiple languages**: Java/Python/C++/Golang/JavaScript/Rust/Scala/TypeScript.
- **Multiple languages**: Java/Python/C++/Golang/JavaScript/Rust/Scala/Kotlin/TypeScript.
- **Zero-copy**: Cross-language out-of-band serialization inspired
by [pickle5](https://peps.python.org/pep-0574/) and off-heap read/write.
- **High performance**: A highly-extensible JIT framework to generate serializer code at runtime in an async multi-thread way to speed serialization, providing 20-170x speed up by:
Expand All @@ -38,6 +38,7 @@ In addition to cross-language serialization, Fury also features at:
- Supports [AOT compilation serialization](docs/guide/graalvm_guide.md) for **GraalVM native image**, and no reflection/serialization json config are needed.
- Supports shared and circular reference object serialization for golang.
- Supports [scala serialization](docs/guide/scala_guide.md)
- Supports [Kotlin serialization](kotlin/README.md)
- Supports automatic object serialization for golang.

## Protocols
Expand Down Expand Up @@ -108,13 +109,13 @@ Nightly snapshot:
<dependency>
<groupId>org.apache.fury</groupId>
<artifactId>fury-core</artifactId>
<version>0.9.0-SNAPSHOT</version>
<version>0.10.0-SNAPSHOT</version>
</dependency>
<!-- row/arrow format support -->
<!-- <dependency>
<groupId>org.apache.fury</groupId>
<artifactId>fury-format</artifactId>
<version>0.9.0-SNAPSHOT</version>
<version>0.10.0-SNAPSHOT</version>
</dependency> -->
```

Expand All @@ -124,13 +125,13 @@ Release version:
<dependency>
<groupId>org.apache.fury</groupId>
<artifactId>fury-core</artifactId>
<version>0.8.0</version>
<version>0.9.0</version>
</dependency>
<!-- row/arrow format support -->
<!-- <dependency>
<groupId>org.apache.fury</groupId>
<artifactId>fury-format</artifactId>
<version>0.8.0</version>
<version>0.9.0</version>
</dependency> -->
```

Expand All @@ -139,13 +140,23 @@ Release version:
Scala2:

```sbt
libraryDependencies += "org.apache.fury" % "fury-scala_2.13" % "0.8.0"
libraryDependencies += "org.apache.fury" % "fury-scala_2.13" % "0.9.0"
```

Scala3:

```sbt
libraryDependencies += "org.apache.fury" % "fury-scala_3" % "0.8.0"
libraryDependencies += "org.apache.fury" % "fury-scala_3" % "0.9.0"
```

### Kotlin

```xml
<dependency>
<groupId>org.apache.fury</groupId>
<artifactId>fury-kotlin</artifactId>
<version>0.9.0</version>
</dependency>
```

### Python
Expand Down
40 changes: 24 additions & 16 deletions docs/guide/scala_guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,34 @@ Scala 2 and 3 are both supported.
To add a dependency on Fury scala for scala 2 with sbt, use the following:

```sbt
libraryDependencies += "org.apache.fury" % "fury-scala_2.13" % "0.8.0"
libraryDependencies += "org.apache.fury" % "fury-scala_2.13" % "0.9.0"
```

To add a dependency on Fury scala for scala 3 with sbt, use the following:

```sbt
libraryDependencies += "org.apache.fury" % "fury-scala_3" % "0.8.0"
libraryDependencies += "org.apache.fury" % "fury-scala_3" % "0.9.0"
```

## Quict Start

```scala
case class Person(name: String, id: Long, github: String)
case class Point(x : Int, y : Int, z : Int)

object ScalaExample {
val fury: Fury = Fury.builder().withScalaOptimizationEnabled(true).build()
// Register optimized fury serializers for scala
ScalaSerializers.registerSerializers(fury)
fury.register(classOf[Person])
fury.register(classOf[Point])

def main(args: Array[String]): Unit = {
val p = Person("Shawn Yang", 1, "https://github.com/chaokunyang")
println(fury.deserialize(fury.serialize(p)))
println(fury.deserialize(fury.serialize(Point(1, 2, 3))))
}
}
```

## Fury creation
Expand All @@ -35,29 +56,16 @@ When using fury for scala serialization, you should create fury at least with fo
```scala
import org.apache.fury.Fury
import org.apache.fury.serializer.scala.ScalaSerializers
import org.apache.fury.serializer.collection.CollectionSerializers.DefaultJavaCollectionSerializer

val fury = Fury.builder()
.withScalaOptimizationEnabled(true)
.requireClassRegistration(true)
.withRefTracking(true)
.build()
val fury = Fury.builder().withScalaOptimizationEnabled(true).build()

// Register optimized fury serializers for scala
ScalaSerializers.registerSerializers(fury)
// serialize range as (start, step, end) instead of collection
// this will be handled in next version automatically.
fury.registerSerializer(classOf[Range.Inclusive], classOf[DefaultJavaCollectionSerializer])
fury.registerSerializer(classOf[Range.Exclusive], classOf[DefaultJavaCollectionSerializer])
fury.registerSerializer(classOf[NumericRange], classOf[DefaultJavaCollectionSerializer])
fury.registerSerializer(classOf[NumericRange.Inclusive], classOf[DefaultJavaCollectionSerializer])
fury.registerSerializer(classOf[NumericRange.Exclusive], classOf[DefaultJavaCollectionSerializer])
```

Depending on the object types you serialize, you may need to register some scala internal types:

```scala
fury.register(Class.forName("scala.collection.generic.DefaultSerializationProxy"))
fury.register(Class.forName("scala.Enumeration.Val"))
```

Expand Down
2 changes: 1 addition & 1 deletion integration_tests/graalvm_tests/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<parent>
<groupId>org.apache.fury</groupId>
<artifactId>fury-parent</artifactId>
<version>0.9.0-SNAPSHOT</version>
<version>0.10.0-SNAPSHOT</version>
<relativePath>../../java</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
Expand Down
2 changes: 1 addition & 1 deletion integration_tests/jdk_compatibility_tests/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<parent>
<groupId>org.apache.fury</groupId>
<artifactId>fury-parent</artifactId>
<version>0.9.0-SNAPSHOT</version>
<version>0.10.0-SNAPSHOT</version>
<relativePath>../../java</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
Expand Down
2 changes: 1 addition & 1 deletion integration_tests/jpms_tests/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<parent>
<groupId>org.apache.fury</groupId>
<artifactId>fury-parent</artifactId>
<version>0.9.0-SNAPSHOT</version>
<version>0.10.0-SNAPSHOT</version>
<relativePath>../../java</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
Expand Down
4 changes: 2 additions & 2 deletions integration_tests/latest_jdk_tests/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<parent>
<groupId>org.apache.fury</groupId>
<artifactId>fury-parent</artifactId>
<version>0.9.0-SNAPSHOT</version>
<version>0.10.0-SNAPSHOT</version>
<relativePath>../../java</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
Expand Down Expand Up @@ -71,4 +71,4 @@
</plugins>
</build>

</project>
</project>
2 changes: 1 addition & 1 deletion java/benchmark/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
<parent>
<artifactId>fury-parent</artifactId>
<groupId>org.apache.fury</groupId>
<version>0.9.0-SNAPSHOT</version>
<version>0.10.0-SNAPSHOT</version>
</parent>

<artifactId>benchmark</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion java/fury-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<parent>
<groupId>org.apache.fury</groupId>
<artifactId>fury-parent</artifactId>
<version>0.9.0-SNAPSHOT</version>
<version>0.10.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down
2 changes: 1 addition & 1 deletion java/fury-format/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<parent>
<groupId>org.apache.fury</groupId>
<artifactId>fury-parent</artifactId>
<version>0.9.0-SNAPSHOT</version>
<version>0.10.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down
2 changes: 1 addition & 1 deletion java/fury-test-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<parent>
<artifactId>fury-parent</artifactId>
<groupId>org.apache.fury</groupId>
<version>0.9.0-SNAPSHOT</version>
<version>0.10.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down
2 changes: 1 addition & 1 deletion java/fury-testsuite/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<parent>
<artifactId>fury-parent</artifactId>
<groupId>org.apache.fury</groupId>
<version>0.9.0-SNAPSHOT</version>
<version>0.10.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down
2 changes: 1 addition & 1 deletion java/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
<groupId>org.apache.fury</groupId>
<artifactId>fury-parent</artifactId>
<packaging>pom</packaging>
<version>0.9.0-SNAPSHOT</version>
<version>0.10.0-SNAPSHOT</version>
<name>Fury Project Parent POM</name>
<description>
Apache Fury™ is a blazingly fast multi-language serialization framework powered by jit and zero-copy.
Expand Down
2 changes: 1 addition & 1 deletion javascript/packages/fury/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@furyjs/fury",
"version": "0.9.0.dev",
"version": "0.10.0.dev",
"description": "Apache Fury™(incubating) is a blazingly fast multi-language serialization framework powered by jit and zero-copy",
"main": "dist/index.js",
"scripts": {
Expand Down
2 changes: 1 addition & 1 deletion javascript/packages/hps/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@furyjs/hps",
"version": "0.9.0.dev",
"version": "0.10.0.dev",
"description": "Apache Fury™(incubating) nodejs high-performance suite",
"main": "dist/index.js",
"files": [
Expand Down
24 changes: 24 additions & 0 deletions kotlin/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,30 @@ Additional Notes:

- wrappers classes created from `withDefault` method is currently not supported.

## Quick Start

```kotlin
import org.apache.fury.Fury
import org.apache.fury.ThreadSafeFury
import org.apache.fury.serializer.kotlin.KotlinSerializers

data class Person(val name: String, val id: Long, val github: String)
data class Point(val x : Int, val y : Int, val z : Int)

fun main(args: Array<String>) {
// Note: following fury init code should be executed only once in a global scope instead
// of initializing it everytime when serialization.
val fury: ThreadSafeFury = Fury.builder().requireClassRegistration(true).buildThreadSafeFury()
KotlinSerializers.registerSerializers(fury)
fury.register(Person::class.java)
fury.register(Point::class.java)

val p = Person("Shawn Yang", 1, "https://github.com/chaokunyang")
println(fury.deserialize(fury.serialize(p)))
println(fury.deserialize(fury.serialize(Point(1, 2, 3))))
}
```

## Building Fury Kotlin

```bash
Expand Down
2 changes: 1 addition & 1 deletion kotlin/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@

<groupId>org.apache.fury</groupId>
<artifactId>fury-kotlin</artifactId>
<version>0.9.0-SNAPSHOT</version>
<version>0.10.0-SNAPSHOT</version>
<modelVersion>4.0.0</modelVersion>

<properties>
Expand Down
2 changes: 1 addition & 1 deletion python/pyfury/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,4 +71,4 @@
except (AttributeError, ImportError):
pass

__version__ = "0.9.0.dev"
__version__ = "0.10.0.dev"
2 changes: 1 addition & 1 deletion rust/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ exclude = [
resolver = "2"

[workspace.package]
version = "0.9.0"
version = "0.10.0"
rust-version = "1.70"
license = "Apache-2.0"
readme = "README.md"
Expand Down
2 changes: 1 addition & 1 deletion scala/build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
* limitations under the License.
*/

val furyVersion = "0.9.0-SNAPSHOT"
val furyVersion = "0.10.0-SNAPSHOT"
val scala213Version = "2.13.15"
ThisBuild / apacheSonatypeProjectProfile := "fury"
version := furyVersion
Expand Down

0 comments on commit 0189c93

Please sign in to comment.