From 29fcff723504437ba287938bfb114e47d8e1aefa Mon Sep 17 00:00:00 2001 From: Shawn Yang Date: Sun, 7 Apr 2024 21:11:39 +0800 Subject: [PATCH] chore: revert add xlang type mapping (#1468)" (#1475) This reverts commit 959796233fdd25a3bf47bc2dd75c6d60e5d7d08e in #1468 --- docs/guide/DEVELOPMENT.md | 2 +- docs/guide/xlang_type_mapping.md | 73 +------------------ .../specification/xlang_serialization_spec.md | 2 + 3 files changed, 4 insertions(+), 73 deletions(-) diff --git a/docs/guide/DEVELOPMENT.md b/docs/guide/DEVELOPMENT.md index bfab541791..5d71166a4f 100644 --- a/docs/guide/DEVELOPMENT.md +++ b/docs/guide/DEVELOPMENT.md @@ -1,6 +1,6 @@ --- title: Development -sidebar_position: 7 +sidebar_position: 6 id: development --- diff --git a/docs/guide/xlang_type_mapping.md b/docs/guide/xlang_type_mapping.md index bec2295738..f529d4ef32 100644 --- a/docs/guide/xlang_type_mapping.md +++ b/docs/guide/xlang_type_mapping.md @@ -4,75 +4,4 @@ sidebar_position: 3 id: xlang_type_mapping --- -Note: - -- For type definition, see [Type Systems in Spec](../specification/xlang_serialization_spec.md#type-systems) -- `int16_t[x]/vector<~>` indicates `int16_t[x]/vector` -- The cross-language serialization is not stable, do not use it in your production environment. - -# Type Mapping - -| Type | Type ID | Java | Python | Javascript | C++ | Golang | Rust | -|--------------------|---------|-----------------|----------------------|-----------------|--------------------------------|------------------|------------------| -| bool | 1 | bool/Boolean | bool | Boolean | bool | bool | bool | -| int8 | 2 | byte/Byte | int/pyfury.Int8 | Type.int8() | int8_t | int8 | i8 | -| int16 | 3 | short/Short | int/pyfury.Int16 | Type.int16() | int16_t | int16 | i6 | -| int32 | 4 | int/Integer | int/pyfury.Int32 | Type.int32() | int32_t | int32 | i32 | -| var_int32 | 5 | int/Integer | int/pyfury.VarInt32 | Type.varint32() | fury::varint32_t | fury.varint32 | fury::varint32 | -| int64 | 6 | long/Long | int/pyfury.Int64 | Type.int64() | int64_t | int64 | i64 | -| var_int64 | 7 | long/Long | int/pyfury.VarInt64 | Type.varint64() | fury::varint64_t | fury.varint64 | fury::varint64 | -| sli_int64 | 8 | long/Long | int/pyfury.SliInt64 | Type.sliint64() | fury::sliint64_t | fury.sliint64 | fury::sliint64 | -| float16 | 9 | float/Float | float/pyfury.Float16 | Type.float16() | fury::float16_t | fury.float16 | fury::f16 | -| float32 | 10 | float/Float | float/pyfury.Float32 | Type.float32() | float | float32 | f32 | -| float64 | 11 | double/Double | float/pyfury.Float64 | Type.float64() | double | float64 | f64 | -| string | 12 | String | str | String | string | string | String/str | -| enum | 13 | Enum subclasses | enum subclasses | / | enum | / | enum | -| list | 14 | List/Collection | list/tuple | array | vector | slice | Vec | -| set | 15 | Set | set | / | set | fury.Set | Set | -| map | 16 | Map | dict | Map | unordered_map | map | HashMap | -| duration | 17 | Duration | timedelta | Number | duration | Duration | Duration | -| timestamp | 18 | Instant | datetime | Number | std::chrono::nanoseconds | Time | DateTime | -| decimal | 19 | BigDecimal | Decimal | bigint | / | / | / | -| array | 20 | array | np.ndarray | / | / | array/slice | Vec | -| bool_array | 21 | bool[] | ndarray(np.bool_) | / | `bool[x]` | `[x]bool/[]~` | `Vec` | -| int16_array | 22 | short[] | ndarray(int16) | / | `int16_t[x]/vector<~>` | `[x]int16/[]~` | `Vec` | -| int32_array | 23 | int[] | ndarray(int32) | / | `int32_t[x]/vector<~>` | `[x]int32/[]~` | `Vec` | -| int64_array | 24 | long[] | ndarray(int64) | / | `int64_t[x]/vector<~>` | `[x]int64/[]~` | `Vec` | -| float16_array | 25 | float[] | ndarray(float16) | / | `fury::float16_t[x]/vector<~>` | `[x]float16/[]~` | `Vec` | -| float32_array | 26 | float[] | ndarray(float32) | / | `float[x]/vector<~>` | `[x]float32/[]~` | `Vec` | -| float64_array | 27 | float[] | ndarray(float64) | / | `double[x]/vector<~>` | `[x]float64/[]~` | `Vec` | -| tensor | 28 | / | / | / | / | / | / | -| sparse tensor | 29 | / | / | / | / | / | / | -| arrow record batch | 30 | / | / | / | / | / | / | -| arrow table | 31 | / | / | / | / | / | / | - -# Type annotation(not implemented) - -Due to differences between type systems of languages, those types can't be mapped one-to-one between languages. Users -can provide meta hints for fields of a type, or for the whole type. Such information can be provided in other languages -too: - -- java: use annotation. -- cpp: use macro and template. -- golang: use struct tag. -- python: use typehint. -- rust: use macro. - -Here is en example: - -- Java: - ```java - class Foo { - @Int32Type(varint = true) - int f1; - List<@Int32Type(varint = true) Integer> f2; - } - ``` -- Python: - -```python -class Foo: - f1: Int32Type(varint=True) - f2: List[Int32Type(varint=True)] -``` - +Coming soon. diff --git a/docs/specification/xlang_serialization_spec.md b/docs/specification/xlang_serialization_spec.md index 7838f78ce2..e01ec921c9 100644 --- a/docs/specification/xlang_serialization_spec.md +++ b/docs/specification/xlang_serialization_spec.md @@ -29,9 +29,11 @@ also introduce more complexities compared to static serialization frameworks. So - int16: a 16-bit signed integer. - int32: a 32-bit signed integer. - var_int32: a 32-bit signed integer which use fury var_int32 encoding. +- fixed_int32: a 32-bit signed integer which use two's complement encoding. - int64: a 64-bit signed integer. - var_int64: a 64-bit signed integer which use fury PVL encoding. - sli_int64: a 64-bit signed integer which use fury SLI encoding. +- fixed_int64: a 64-bit signed integer which use two's complement encoding. - float16: a 16-bit floating point number. - float32: a 32-bit floating point number. - float64: a 64-bit floating point number including NaN and Infinity.