Skip to main content

quickjs-cffi

PyPI Supported Versions PyPI Downloads Github Downloads License: MIT

Python binding for QuickJS Javascript Engine using cffi. Supports x86_64 and aarch64 platforms.

NOTE: Currently supported operating system is Linux (manylinux_2_28 and musllinux_1_2)

Install

pip install quickjs-cffi

Features

  • ✅ Use npm to install packages and use them directly
  • ✅ In case you need to use complex ECMAScript or TypeScript modules/libraries/packages see Yjs example below how to use esbuild to transpile their code to QuickJS compatible ECMAScript modules
  • ✅ Import remote and local ECMAScript scripts/modules
  • ✅ Define Python objects and pass them to JavaScript
  • ✅ Define JavaScript objects and pass them to Python
  • ✅ Python objects live in Python environment
  • ✅ JavaScript objects live in JavaScript environment
  • ✅ Freely use Python objects in JavaScript
  • ✅ Freely use JavaScript objects in Python

Usage

from quickjs import JSEval, JSRuntime, JSContext, JSError

# create runtime and context
rt = JSRuntime()
ctx: JSContext = rt.new_context()

# load lodash from remote location
# it also accepts local JavaScript files
ctx.load('https://raw.githubusercontent.com/lodash/lodash/refs/heads/main/dist/lodash.min.js')
lodash: JSValue = ctx['_']

# call lodash.range to create array JavaScript side
# and return its handler to Python side
r: JSValue = lodash.range(10, 100, 10)

# on Python side, define JavaScript function
# and use it to filter JavaScript array
f0: JSValue = ctx.eval('n => n >= 50')
r: JSValue = lodash.filter(lodash.range(10, 100, 10), f0)

# on Python side, define Python function
# and use on JavaScript side to filter array
def f1(n, *args):
    return n >= 50

r: JSValue = lodash.filter(lodash.range(10, 100, 10), f1)

# on Python side, define Python lambda function
# and use on JavaScript side to filter array
f2 = lambda n, *args: n >= 50 # noqa
r: JSValue = lodash.filter(lodash.range(10, 100, 10), f2)

# on Python side, define pass inplace Python lambda function
# and use on JavaScript side to filter array
r: JSValue = lodash.filter(lodash.range(10, 100, 10), lambda n, *args: n >= 50)

# on Python side, define Python lambda function
# then set it as global function in JavaScript
# and use it on JavaScript side to filter array
ctx['f3'] = lambda n, *args: n >= 50
r: JSValue = lodash.filter(lodash.range(10, 100, 10), ctx.eval('f3'))

Build

python -m venv venv
source venv/bin/activate
pip install poetry
poetry install --all-extras

Demos

First setup temp node project, so node modules can be installed and used inside QuickJS examples:

npm init -y
npm install esbuild

Huge number of isoloted JavaScript contexts:

python -B examples/demo_contexts.py

Lodash example:

npm install lodash
python -B examples/demo_lodash.py

Handlebas example:

npm install handlebars
python -B examples/demo_handlebars.py

Yjs example:

npm install yjs
esbuild node_modules/yjs/src/index.js --bundle --outfile=examples/yjs.js --format=iife --loader:.ts=ts --global-name="Y"
python -B examples/demo_yjs.py

Metadata

Release files for quickjs-cffi 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for quickjs-cffi 0.1.3
File
quickjs_cffi-0.1.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl PyPy 3.10 PyPy 3.10 7.3 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
quickjs_cffi-0.1.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl PyPy 3.10 PyPy 3.10 7.3 Linux glibc 2.28+ ARM64, Linux glibc 2.17+ ARM64 Details
quickjs_cffi-0.1.3-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
quickjs_cffi-0.1.3-cp313-cp313-musllinux_1_2_aarch64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ ARM64 Details
quickjs_cffi-0.1.3-cp313-cp313-manylinux_2_28_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 Details
quickjs_cffi-0.1.3-cp313-cp313-manylinux_2_28_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
quickjs_cffi-0.1.3-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
quickjs_cffi-0.1.3-cp312-cp312-musllinux_1_2_aarch64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ ARM64 Details
quickjs_cffi-0.1.3-cp312-cp312-manylinux_2_28_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 Details
quickjs_cffi-0.1.3-cp312-cp312-manylinux_2_28_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
quickjs_cffi-0.1.3-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
quickjs_cffi-0.1.3-cp311-cp311-musllinux_1_2_aarch64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ ARM64 Details
quickjs_cffi-0.1.3-cp311-cp311-manylinux_2_28_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
quickjs_cffi-0.1.3-cp311-cp311-manylinux_2_28_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
quickjs_cffi-0.1.3-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details
quickjs_cffi-0.1.3-cp310-cp310-musllinux_1_2_aarch64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ ARM64 Details
quickjs_cffi-0.1.3-cp310-cp310-manylinux_2_28_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
quickjs_cffi-0.1.3-cp310-cp310-manylinux_2_28_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64, Linux glibc 2.17+ ARM64 Details

Total release size: 38.2 MB

Release files / quickjs_cffi-0.1.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL quickjs_cffi-0.1.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.0 MB
Tags Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 PyPy 3.10 PyPy 3.10 7.3
SHA-256 checksum
How to use checksums
f85a44a638b8db4b0bd8ef1a0bf25965cd14d8a6bf94eddc40d4cd686f68a151
BLAKE2b-256 checksum
How to use checksums
64f27fe57f7e891075caf0087bb135e8eab4ed3e78ccaf20d092bc6558110864
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.4 CPython/3.12.7 Linux/6.12.1-arch1-1

Release files / quickjs_cffi-0.1.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL quickjs_cffi-0.1.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.9 MB
Tags Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 PyPy 3.10 PyPy 3.10 7.3
SHA-256 checksum
How to use checksums
263cf3f62fb055b3a9266d95768b628fc09de96c46fb2cba72f138c33ef5c768
BLAKE2b-256 checksum
How to use checksums
1fd20348e95e3653c0b1aa3e3e385461b3a8d4f58a00e95e2c88280ff4663d93
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.4 CPython/3.12.7 Linux/6.12.1-arch1-1

Release files / quickjs_cffi-0.1.3-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL quickjs_cffi-0.1.3-cp313-cp313-musllinux_1_2_x86_64.whl
Size 2.1 MB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
c863c072d85b712051ab98603215e0cf1e54e045c8fc1a47d9bafc21b739f56e
BLAKE2b-256 checksum
How to use checksums
f94324a5bf732404601be8a0f6c80097ade0fd3e09e6518564a577025ebef6a3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.4 CPython/3.12.7 Linux/6.12.1-arch1-1

Release files / quickjs_cffi-0.1.3-cp313-cp313-musllinux_1_2_aarch64.whl

Download URL quickjs_cffi-0.1.3-cp313-cp313-musllinux_1_2_aarch64.whl
Size 2.1 MB
Tags CPython 3.13 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
afaac20d6816ccdde714f2f7a096633b4e0e43a16b6dcf8dd59d6c8fef0fc4fa
BLAKE2b-256 checksum
How to use checksums
ea109ae400062fa58b818c236a1b34cfb03f0af1d42c840ce078781f7e9a702d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.4 CPython/3.12.7 Linux/6.12.1-arch1-1

Release files / quickjs_cffi-0.1.3-cp313-cp313-manylinux_2_28_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL quickjs_cffi-0.1.3-cp313-cp313-manylinux_2_28_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.2 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
50c8b59d6096f06594128d3ece82e3168e03376cec4a68de0a8f51baedab546b
BLAKE2b-256 checksum
How to use checksums
209a7c853b9820b761304444501cc404a2b8ec01d36a50eb8481dfd564476698
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.4 CPython/3.12.7 Linux/6.12.1-arch1-1

Release files / quickjs_cffi-0.1.3-cp313-cp313-manylinux_2_28_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL quickjs_cffi-0.1.3-cp313-cp313-manylinux_2_28_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 2.2 MB
Tags CPython 3.13 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
8cfb30b7d7643ba0b9c612f774c7b8805936e0594c9b931855384d79138e24bc
BLAKE2b-256 checksum
How to use checksums
69a6b3bdf2a6c0964c9fb2abd795823ea78358db61811adb69894fc458076a14
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.4 CPython/3.12.7 Linux/6.12.1-arch1-1

Release files / quickjs_cffi-0.1.3-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL quickjs_cffi-0.1.3-cp312-cp312-musllinux_1_2_x86_64.whl
Size 2.1 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
a1c88946f620205380f47d9ce6efe89804bdbf3653f9d878ad587e1ec30b24c0
BLAKE2b-256 checksum
How to use checksums
fd83e4af7e43411b35a9cbf3fb623661f9f172f064a78a1c49fc15c45c455d26
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.4 CPython/3.12.7 Linux/6.12.1-arch1-1

Release files / quickjs_cffi-0.1.3-cp312-cp312-musllinux_1_2_aarch64.whl

Download URL quickjs_cffi-0.1.3-cp312-cp312-musllinux_1_2_aarch64.whl
Size 2.1 MB
Tags CPython 3.12 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
e8c3da920d39a521a85165eb8f6de6fb1fcb53e70ef7cec3c385a5968295fa40
BLAKE2b-256 checksum
How to use checksums
933e38fc5befa1e1e87d06c2b6ef34975c92107efef550f18239d3df4101549a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.4 CPython/3.12.7 Linux/6.12.1-arch1-1

Release files / quickjs_cffi-0.1.3-cp312-cp312-manylinux_2_28_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL quickjs_cffi-0.1.3-cp312-cp312-manylinux_2_28_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.2 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
bc239d1e40a7a6e9721340aa95b660c0cdf26bffab1c59444165299611915c4c
BLAKE2b-256 checksum
How to use checksums
5cb9a1b58cc70e8cd86012830919f339e6483d33a905947e954ad09fe1047b41
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.4 CPython/3.12.7 Linux/6.12.1-arch1-1

Release files / quickjs_cffi-0.1.3-cp312-cp312-manylinux_2_28_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL quickjs_cffi-0.1.3-cp312-cp312-manylinux_2_28_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 2.2 MB
Tags CPython 3.12 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
d6a4462d091936ff5296cf6de179a1c3e01c9cead18ae17b9de99d6cdee1d131
BLAKE2b-256 checksum
How to use checksums
c9bca2b085280847cbc06d82f25c4e09db46fa8dbe3867c13f83e963894d3e63
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.4 CPython/3.12.7 Linux/6.12.1-arch1-1

Release files / quickjs_cffi-0.1.3-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL quickjs_cffi-0.1.3-cp311-cp311-musllinux_1_2_x86_64.whl
Size 2.1 MB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
a94c98cc4e9d6425bb0e9419d4d39f0127eab95a548ddd538bf1ad6feebf0e27
BLAKE2b-256 checksum
How to use checksums
2c29cc7e0cd3c38a0a1b07c7e52c791d67343d7bc5e0058f3a8da7703f6d399c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.4 CPython/3.12.7 Linux/6.12.1-arch1-1

Release files / quickjs_cffi-0.1.3-cp311-cp311-musllinux_1_2_aarch64.whl

Download URL quickjs_cffi-0.1.3-cp311-cp311-musllinux_1_2_aarch64.whl
Size 2.1 MB
Tags CPython 3.11 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
2d37bc49b09596d969bc0d76beb4b64dc8d57e7f696da916744a54ee3478b4f7
BLAKE2b-256 checksum
How to use checksums
46fa2a1388565e3c9ee0b888b5470a92f09d3e257d4f767804e149d7e2c4d512
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.4 CPython/3.12.7 Linux/6.12.1-arch1-1

Release files / quickjs_cffi-0.1.3-cp311-cp311-manylinux_2_28_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL quickjs_cffi-0.1.3-cp311-cp311-manylinux_2_28_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.2 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
2084e3f051c4da5cc2e2d46eda05a1082b279906bf1eaed707d4e08f320250a2
BLAKE2b-256 checksum
How to use checksums
b5c25d9cab6be4bc86b16882ba6a947bd94f936a0f74249bd9f868775f25c778
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.4 CPython/3.12.7 Linux/6.12.1-arch1-1

Release files / quickjs_cffi-0.1.3-cp311-cp311-manylinux_2_28_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL quickjs_cffi-0.1.3-cp311-cp311-manylinux_2_28_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 2.2 MB
Tags CPython 3.11 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
01077959d7302ec538fdf35169186fc33b40c8fa08f2fb02803ba8a221dffd86
BLAKE2b-256 checksum
How to use checksums
bb9a2a3f9b96a41d40de9fca543912a23a75d54a846f4c80d71e1a379544550e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.4 CPython/3.12.7 Linux/6.12.1-arch1-1

Release files / quickjs_cffi-0.1.3-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL quickjs_cffi-0.1.3-cp310-cp310-musllinux_1_2_x86_64.whl
Size 2.1 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
d31c114951973d4d5f31ef46658b4451564af2cd4573caf3588d19f79336047e
BLAKE2b-256 checksum
How to use checksums
c00b64b56cb22d13b54b0401523ce2fb35f1920f1e7fc342fda3f2b28533e1cb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.4 CPython/3.12.7 Linux/6.12.1-arch1-1

Release files / quickjs_cffi-0.1.3-cp310-cp310-musllinux_1_2_aarch64.whl

Download URL quickjs_cffi-0.1.3-cp310-cp310-musllinux_1_2_aarch64.whl
Size 2.1 MB
Tags CPython 3.10 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
9dca0831aeb86ae3e5b18b2231aca36262f4eabf7bef88f044fee724e46a50a5
BLAKE2b-256 checksum
How to use checksums
a219067e6f3f1bf8a2057771a0b097078c89a3d7e4c5e5bacee776d601ed7cee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.4 CPython/3.12.7 Linux/6.12.1-arch1-1

Release files / quickjs_cffi-0.1.3-cp310-cp310-manylinux_2_28_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL quickjs_cffi-0.1.3-cp310-cp310-manylinux_2_28_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.2 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
66b8ed319b6df71475ae925d9b963c2bcbd35851936d93f2e806a36d6bf51eff
BLAKE2b-256 checksum
How to use checksums
3e042fbb96c30c81489a50c7079335c15a40c30ffb6d8bf1250078c0fe4894b3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.4 CPython/3.12.7 Linux/6.12.1-arch1-1

Release files / quickjs_cffi-0.1.3-cp310-cp310-manylinux_2_28_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL quickjs_cffi-0.1.3-cp310-cp310-manylinux_2_28_aarch64.manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 2.2 MB
Tags CPython 3.10 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
caec37e2d8059f2896eb07e78f8d044d27fb8b3d658514334bbd0c66f69c927d
BLAKE2b-256 checksum
How to use checksums
990649811f019cf923363e842d052dab362ade95b6be32045ca77fc6df26d7ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.4 CPython/3.12.7 Linux/6.12.1-arch1-1

Release history Release notifications | RSS feed

This release

0.1.3 This release

18 release files

0.1.2

18 release files

0.1.1

18 release files

0.1.0

18 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page