skillfed

quickjs

Wrapping the quickjs C library.

quickjs v1.19.4 964.1K downloads/30d#4,626 on PyPI205
License unclear Abandoned released

What it is and what it does

quickjs is a Python binding for the QuickJS C library, allowing you to execute JavaScript code directly from Python and call Python functions from within that JavaScript. It handles type conversion for simple types (int, float, string) automatically and converts complex types (dicts, lists) via JSON. The library is thread-safe when using the Function class and provides resource control through memory and time limits, making it suitable for sandboxed or production code execution.

The package has been archived and is no longer actively maintained as of its last release in 2023-11-19. Prebuilt wheels are available for Python 3.7-3.10 on major platforms (Windows, macOS, Linux), reducing installation friction for those versions. However, the abandoned status means no new features, security patches, or compatibility updates should be expected.

Use it for:

  • Execute untrusted JavaScript in a sandboxed environment with memory and time limits for security.
  • Embed a lightweight JavaScript engine in Python applications without external process dependencies.
  • Call Python functions from JavaScript code running inside the interpreter for bidirectional interop.
  • Prototype or test JavaScript logic from a Python codebase without spawning external processes.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

Wraps the QuickJS C library to execute JavaScript code from Python, with support for calling Python functions from JS and resource limits.

Yes, if you need lightweight JavaScript execution and can accept the abandoned maintenance status. The package is stable with no known vulnerabilities, making it suitable for non-critical use cases. However, do not use it if you require ongoing security updates, Python version support beyond those with prebuilt wheels, or active bug fixes. Verify the unclear license terms before use in proprietary projects.

Install

quickjs on PyPI

pip

pip install quickjs

uv

uv add quickjs

poetry

poetry add quickjs

Installing quickjs

Before you install

Medium install friction due to compiled C extension; prebuilt wheels available for Python 3.7-3.10 on Windows, macOS, and Linux. Repository is archived and abandoned as of the latest release.

License in practice

License treatment is unclear—no SPDX identifier or raw license text provided. Verify licensing terms before use in proprietary or redistributed projects.

Quickstart

pip install quickjs

from quickjs import Function

f = Function("f", """
    function adder(a, b) {
        return a + b;
    }
    function f(a, b) {
        return adder(a, b);
    }
""")

assert f(1, 2) == 3

Requires a C compiler and build tools to compile the QuickJS extension if prebuilt wheels are unavailable for your platform.

Verify before relying

  • Exact license terms and whether redistribution is permitted
  • Whether abandoned status affects security or compatibility with future Python versions
  • Support for Python versions beyond those with prebuilt wheels

Package facts

License not declared (unclear)
Python support not specified
Install friction medium — platform-specific wheel
Runtime dependencies none
Maintenance abandoned — 999 days since the last release
Last repo commit (repository archived)
First released
Downloads 964,133/month — #4,626 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: quickjs-1.19.4-cp310-cp310-macosx_11_0_x86_64.whl; quickjs-1.19.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl; quickjs-1.19.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; quickjs-1.19.4-cp310-cp310-win_amd64.whl; quickjs-1.19.4-cp311-cp311-macosx_10_9_universal2.whl; quickjs-1.19.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl; quickjs-1.19.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; quickjs-1.19.4-cp311-cp311-win_amd64.whl; quickjs-1.19.4-cp312-cp312-macosx_10_9_universal2.whl; quickjs-1.19.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl; quickjs-1.19.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; quickjs-1.19.4-cp312-cp312-win_amd64.whl; quickjs-1.19.4-cp38-cp38-macosx_11_0_x86_64.whl; quickjs-1.19.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl; quickjs-1.19.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; quickjs-1.19.4-cp38-cp38-win_amd64.whl; quickjs-1.19.4-cp39-cp39-macosx_11_0_x86_64.whl; quickjs-1.19.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl; quickjs-1.19.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; quickjs-1.19.4-cp39-cp39-win_amd64.whl

Tags

javascript execution from pythonrun js code in pythonquickjs bindingembed javascript interpreterpython javascript bridge
javascript-interopsandboxing

More Software Development packages