Skip to content

Commit

Permalink
stable
Browse files Browse the repository at this point in the history
  • Loading branch information
ijl committed Aug 15, 2021
1 parent a116ddf commit 2719fc7
Show file tree
Hide file tree
Showing 64 changed files with 120 additions and 18,970 deletions.
30 changes: 3 additions & 27 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 12 additions & 5 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,20 @@ classifiers = [
"Typing :: Typed",
]

[features]
default = []

# Use SIMD intrinsics. This requires Rust on the nightly channel.
unstable-simd = [
"bytecount/generic-simd",
"bytecount/runtime-dispatch-simd",
"encoding_rs/simd-accel",
]

[dependencies]
ahash = { version = "0.7", default_features = false }
associative-cache = { version = "1" }
bytecount = { version = "^0.6.2", default_features = false, features = ["generic-simd", "runtime-dispatch-simd"] }
bytecount = { version = "^0.6.2", default_features = false, features = ["runtime-dispatch-simd"] }
chrono = { version = "0.4", default_features = false }
encoding_rs = { version = "0.8", default_features = false }
inlinable_string = { version = "0.1" }
Expand All @@ -60,12 +70,9 @@ once_cell = { version = "1", default_features = false }
pyo3 = { version = "^0.14.2", default_features = false, features = ["extension-module"]}
ryu = { version = "1", default_features = false }
serde = { version = "1", default_features = false }
serde_json = { path = "./json", default_features = false, features = ["std"] }
serde_json = { version = "^1.0.66", default_features = false, features = ["std", "float_roundtrip"] }
smallvec = { version = "^1.6", default_features = false, features = ["union", "write"] }

[target.'cfg(any(target_arch = "x86_64", target_arch = "aarch64", target_arch = "i686", target_arch = "armv7"))'.dependencies]
encoding_rs = { version = "0.8", default_features = false, features = ["simd-accel"] }

[profile.release]
codegen-units = 1
debug = false
Expand Down
13 changes: 9 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -1162,17 +1162,22 @@ If someone implements it well.
To package orjson requires [Rust](https://www.rust-lang.org/) and the
[maturin](https://github.com/PyO3/maturin) build tool.

This is an example for the x86_64-unknown-linux-gnu target:
This is an example for the x86_64-unknown-linux-gnu target on the Rust
nightly channel:

```sh
RUSTFLAGS="-C target-cpu=k8" maturin build --no-sdist --release --strip
RUSTFLAGS="-C target-cpu=k8" maturin build --no-sdist --release --strip --cargo-extra-args="--features=unstable-simd"
````
To build on the stable channel, do not specify `--features=unstable-simd`. It
is disabled by default. There is a performance benefit of something like
10% when building on nightly with `unstable-simd`.

The explicit `RUSTFLAGS` enables SSE2 on amd64. aarch64 does not need any
`target-feature` specified.

The project's own CI tests against `nightly-2021-08-04`. It is prudent to
pin this version because Rust nightly can introduce breaking changes.
The project's own CI tests against `nightly-2021-08-04` and stable 1.54. It
is prudent to pin the nightly version because that channel can introduce
breaking changes.
orjson is tested for amd64 and aarch64 on Linux and amd64 on macOS and
Windows. It may not work on 32-bit targets.
Expand Down
23 changes: 17 additions & 6 deletions ci/azure-debug.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,30 @@
parameters:
interpreter: ''
manylinux: ''
path: ''
toolchain: ''
- name: extra
type: string
default : ''
- name: interpreter
type: string
default : ''
- name: manylinux
type: string
default : ''
- name: path
type: string
default : ''
- name: toolchain
type: string
default : ''

steps:
- bash: curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain $(toolchain) --profile minimal -y
displayName: rustup
- bash: PATH=$(path) rustup default $(toolchain)
displayName: ensure toolchain
- bash: PATH=$(path) pip install --user --upgrade pip maturin==0.11.2
- bash: PATH=$(path) $(interpreter) -m pip install --user --upgrade pip maturin==0.11.2
displayName: build dependencies
- bash: PATH=$(path) $(interpreter) -m pip install --user -r test/requirements.txt -r integration/requirements.txt
displayName: test dependencies
- bash: PATH=$(path) maturin build --no-sdist --strip --compatibility $(manylinux) --interpreter $(interpreter)
- bash: PATH=$(path) maturin build --no-sdist --strip $(extra) --compatibility $(manylinux) --interpreter $(interpreter)
env:
RUSTFLAGS: "-C target-cpu=k8"
displayName: build debug
Expand Down
29 changes: 21 additions & 8 deletions ci/azure-linux-container.yml
Original file line number Diff line number Diff line change
@@ -1,24 +1,37 @@
parameters:
interpreter: ''
manylinux: ''
path: ''
toolchain: ''
verifyManylinux: ''
- name: extra
type: string
default : ''
- name: interpreter
type: string
default : ''
- name: manylinux
type: string
default : ''
- name: path
type: string
default : ''
- name: toolchain
type: string
default : ''
- name: verifyManylinux
type: boolean
default : true

steps:
- bash: curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain $(toolchain) --profile minimal -y
displayName: rustup
- bash: PATH=$(path) rustup default $(toolchain)
displayName: ensure toolchain
- bash: PATH=$(path) pip install --user --upgrade pip maturin==0.11.2 auditwheel
- bash: PATH=$(path) $(interpreter) -m pip install --user --upgrade pip maturin==0.11.2 auditwheel
displayName: build dependencies
- bash: PATH=$(path) maturin build --no-sdist --release --strip --compatibility $(manylinux) --interpreter $(interpreter)
- bash: PATH=$(path) maturin build --no-sdist --release --strip $(extra) --compatibility $(manylinux) --interpreter $(interpreter)
env:
RUSTFLAGS: "-C target-cpu=k8"
displayName: build
- bash: PATH=$(path) $(interpreter) -m auditwheel repair target/wheels/orjson*.whl
displayName: verify that wheel conforms to manylinux tag
condition: eq('${{ parameters.verifyManylinux }}', true)
condition: eq(${{ parameters.verifyManylinux }}, true)
- bash: PATH=$(path) $(interpreter) -m pip install --user target/wheels/orjson*.whl
displayName: install
- bash: PATH=$(path) $(interpreter) -m pip install --user -r test/requirements.txt -r integration/requirements.txt
Expand Down
4 changes: 2 additions & 2 deletions ci/azure-macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ steps:
displayName: build dependencies
- bash: pip install -r test/requirements.txt -r integration/requirements.txt
displayName: test dependencies
- bash: PATH=$HOME/.cargo/bin:$PATH maturin build --no-sdist --release --strip --interpreter $(interpreter)
- bash: PATH=$HOME/.cargo/bin:$PATH maturin build --no-sdist --release --strip --cargo-extra-args="--features=unstable-simd" --interpreter $(interpreter)
env:
RUSTFLAGS: "-C target-cpu=k8"
displayName: build
Expand All @@ -29,7 +29,7 @@ steps:
displayName: http
- bash: rustup target add aarch64-apple-darwin
displayName: rustup target
- bash: PATH=$HOME/.cargo/bin:$PATH PYO3_CROSS_LIB_DIR=$(python -c "import sysconfig;print(sysconfig.get_config_var('LIBDIR'))") maturin build --no-sdist --release --strip --interpreter $(interpreter) --universal2
- bash: PATH=$HOME/.cargo/bin:$PATH PYO3_CROSS_LIB_DIR=$(python -c "import sysconfig;print(sysconfig.get_config_var('LIBDIR'))") maturin build --no-sdist --release --strip --cargo-extra-args="--features=unstable-simd" --interpreter $(interpreter) --universal2
displayName: build universal2
- bash: pip install --force-reinstall target/wheels/orjson*universal2.whl
displayName: install universal2
Expand Down
29 changes: 24 additions & 5 deletions ci/azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,25 @@ jobs:
- job: linux_sdist
pool:
vmImage: ubuntu-20.04
container: quay.io/pypa/manylinux_2_24_x86_64:latest
variables:
interpreter: python3.9
path: /home/vsts_azpcontainer/.local/bin:/home/vsts_azpcontainer/.cargo/bin:/opt/python/cp39-cp39/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin
target: x86_64-unknown-linux-gnu
steps:
- checkout: self
- template: ./azure-sdist.yml

- job: linux_stable
pool:
vmImage: ubuntu-20.04
container: quay.io/pypa/manylinux_2_24_x86_64:latest
variables:
interpreter: python3.9
path: /home/vsts_azpcontainer/.local/bin:/home/vsts_azpcontainer/.cargo/bin:/opt/python/cp39-cp39/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin
target: x86_64-unknown-linux-gnu
toolchain: 1.54.0
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.9'
addToPath: true
- checkout: self
- template: ./azure-sdist.yml

Expand All @@ -26,10 +38,10 @@ jobs:
vmImage: ubuntu-20.04
container: quay.io/pypa/manylinux_2_24_x86_64:latest
variables:
extra: '--cargo-extra-args="--features=unstable-simd"'
interpreter: python3.9
manylinux: off
path: /home/vsts_azpcontainer/.local/bin:/home/vsts_azpcontainer/.cargo/bin:/opt/python/cp39-cp39/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin
verifyManylinux: false
steps:
- checkout: self
- template: ./azure-debug.yml
Expand All @@ -39,6 +51,7 @@ jobs:
vmImage: ubuntu-20.04
container: quay.io/pypa/manylinux_2_24_x86_64:latest
variables:
extra: '--cargo-extra-args="--features=unstable-simd"'
interpreter: python3.10
manylinux: 2_24
path: /home/vsts_azpcontainer/.local/bin:/home/vsts_azpcontainer/.cargo/bin:/opt/python/cp310-cp310/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin
Expand All @@ -52,6 +65,7 @@ jobs:
vmImage: ubuntu-20.04
container: quay.io/pypa/manylinux_2_24_x86_64:latest
variables:
extra: '--cargo-extra-args="--features=unstable-simd"'
interpreter: python3.9
manylinux: 2_24
path: /home/vsts_azpcontainer/.local/bin:/home/vsts_azpcontainer/.cargo/bin:/opt/python/cp39-cp39/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin
Expand All @@ -65,6 +79,7 @@ jobs:
vmImage: ubuntu-20.04
container: quay.io/pypa/manylinux_2_24_x86_64:latest
variables:
extra: '--cargo-extra-args="--features=unstable-simd"'
interpreter: python3.8
manylinux: 2_24
path: /home/vsts_azpcontainer/.local/bin:/home/vsts_azpcontainer/.cargo/bin:/opt/python/cp38-cp38/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin
Expand All @@ -78,6 +93,7 @@ jobs:
vmImage: ubuntu-20.04
container: quay.io/pypa/manylinux_2_24_x86_64:latest
variables:
extra: '--cargo-extra-args="--features=unstable-simd"'
interpreter: python3.7
manylinux: 2_24
path: /home/vsts_azpcontainer/.local/bin:/home/vsts_azpcontainer/.cargo/bin:/opt/python/cp37-cp37m/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin
Expand All @@ -91,6 +107,7 @@ jobs:
vmImage: ubuntu-20.04
container: quay.io/pypa/manylinux2014_x86_64:2021-07-03-d4d5413
variables:
extra: '--cargo-extra-args="--features=unstable-simd"'
interpreter: python3.9
manylinux: 2014
path: /home/vsts_azpcontainer/.local/bin:/home/vsts_azpcontainer/.cargo/bin:/opt/python/cp39-cp39/bin:/opt/rh/devtoolset-9/root/usr/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Expand All @@ -104,6 +121,7 @@ jobs:
vmImage: ubuntu-20.04
container: quay.io/pypa/manylinux2014_x86_64:2021-07-03-d4d5413
variables:
extra: '--cargo-extra-args="--features=unstable-simd"'
interpreter: python3.8
manylinux: 2014
path: /home/vsts_azpcontainer/.local/bin:/home/vsts_azpcontainer/.cargo/bin:/opt/python/cp38-cp38/bin:/opt/rh/devtoolset-9/root/usr/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Expand All @@ -117,6 +135,7 @@ jobs:
vmImage: ubuntu-20.04
container: quay.io/pypa/manylinux2014_x86_64:2021-07-03-d4d5413
variables:
extra: '--cargo-extra-args="--features=unstable-simd"'
interpreter: python3.7
manylinux: 2014
path: /home/vsts_azpcontainer/.local/bin:/home/vsts_azpcontainer/.cargo/bin:/opt/python/cp37-cp37m/bin:/opt/rh/devtoolset-9/root/usr/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Expand Down
30 changes: 18 additions & 12 deletions ci/azure-sdist.yml
Original file line number Diff line number Diff line change
@@ -1,28 +1,34 @@
parameters:
interpreter: ''
target: ''
toolchain: ''
- name: interpreter
type: string
default : ''
- name: path
type: string
default : ''
- name: toolchain
type: string
default : ''

steps:
- bash: curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain $(toolchain) --profile minimal -y
displayName: rustup
- bash: rustup default $(toolchain)
- bash: PATH=$(path) rustup default $(toolchain)
displayName: ensure toolchain
- bash: pip install --upgrade pip maturin==0.11.2
- bash: PATH=$(path) $(interpreter) -m pip install --user --upgrade pip maturin==0.11.2
displayName: build dependencies
- bash: python3 -m pip install -r test/requirements.txt -r integration/requirements.txt
- bash: PATH=$(path) $(interpreter) -m pip install --user -r test/requirements.txt -r integration/requirements.txt
displayName: test dependencies
- bash: maturin sdist
- bash: PATH=$(path) maturin sdist
displayName: package sdist
- bash: python3 -m pip install target/wheels/orjson*.tar.gz
- bash: PATH=$(path) $(interpreter) -m pip install --user target/wheels/orjson*.tar.gz
displayName: install
- bash: pytest -v test
- bash: PATH=$(path) pytest -v test
displayName: pytest
- bash: ./integration/run thread
- bash: PATH=$(path) ./integration/run thread
displayName: thread
- bash: ./integration/run http
- bash: PATH=$(path) ./integration/run http
displayName: http
- bash: ./ci/deploy target/wheels/*.tar.gz
- bash: PATH=$(path) ./ci/deploy target/wheels/*.tar.gz
displayName: deploy
env:
MATURIN_PASSWORD: $(TWINE_PASSWORD)
Expand Down
Loading

0 comments on commit 2719fc7

Please sign in to comment.