The J programming language, installable with pip. The package also runs J from Python, with J sessions, IPython magics and a Jupyter kernel. This is an unofficial packaging, not affiliated with Jsoftware: J’s home page is jsoftware.com and its official source is jsoftware/jsource. The wheels contain the official J binary releases, unmodified, for Linux (x86_64, aarch64), macOS (Intel and Apple Silicon) and Windows (amd64, arm64).
Requires Python 3.11 or newer.
pip install jlanguage
jconsole
That starts the standard J console REPL:
+/ % # 1 2 3 4
0.25
python -m jlang does the same. From Python, jlang.path() returns the J installation directory, containing bin/, system/, addons/ and tools/, and jlang.jconsole_path() the full path of the console.
J runs J inside the Python process:
from jlang.core import J
j = J()
j['+/ % # 1 2 3 4']0.25
In IPython or Jupyter, %load_ext jlang.core adds the %%j and %j magics. Jupyter lists the included J kernel as J. See the J page for sessions, magics and the kernel.
The first three numbers of the version are J’s version: jlanguage 9.7.1.1 installs J 9.7.1. The fourth number counts jlanguage’s releases for that J version.
tools/make_wheels.py builds the Python wrapper once, then bundles each official J release from jsoftware.com into its platform wheel. Downloads are checked against the published sha256sums. One CI job packages Linux, macOS and Windows wheels without compilation or platform-specific build runners. The Python interface loads the bundled J library through ctypes. The Jupyter kernel uses kernmini’s Python API.
Fetch J for your platform, then install the package and its development tools:
python tools/fetch_j.py
pip install -e '.[dev]'Edit the notebooks, then run nbdev-export and nbdev-readme to regenerate the Python API and README. Run nbdev-test for the notebooks and pytest for the kernel and packaging tests. python tools/make_wheels.py creates all platform wheels.
J is © Jsoftware Inc. and distributed under the GPLv3 (see jsoftware/jsource). This package redistributes the official binaries unmodified.
When Jsoftware publishes a new J release:
- Set
versioninpyproject.tomlto the new J version followed by.1, such as9.7.2.1.tools/fetch_j.pyderives the download URL from it. Check the archive names against the install dir, because the suffixes have changed between releases (9.6.3 usedlinux64, 9.7.1 useslinux). - Commit and push the changes, then run
ship-release. CI builds and publishes the five platform wheels.
ship-release tags the version in pyproject.toml and bumps the fourth number afterwards. For another release of the same J version, keep the first three numbers and run ship-release again.