Skip to content

Jenner

Jenner is a SAS-compatible alternative to SAS: it runs most SAS programs out of the box -- DATA steps, procedures, macros, and SQL -- without a SAS license. Built from the ground up in Rust, it adds capabilities SAS doesn't have: native CSV and Parquet I/O, direct database connectors, a Jupyter kernel, ODS-compatible graphics, and PROC AI for LLM-powered data processing.

Statistical and time-series procedures (ARIMA, REG, LOGISTIC, LIFETEST, and others) use Python (statsmodels) or R (survival, forecast) as their computational backend while accepting standard SAS syntax.

Jenner reads and writes SAS7BDAT datasets natively. Reading uses vendored ReadStat; writing uses a native Rust port of FredHutch/sas7bdat producing files that round-trip through pyreadstat, R's haven, and Jenner's own reader. Those three are independent readers; the round-trip is verified against them, not against a SAS installation. SAS7BDAT is a first-class storage engine, not an export-only format: a DATA step, PROC SQL, or a LIBNAME declared with the engine all write it directly, exactly as they write Parquet or CSV. Avro is Jenner's default rather than SAS7BDAT — see storage engines for what that changes and how to work end to end in SAS7BDAT when you need to.

SAS Transport (XPT) read/write is also supported for FDA submissions. Legacy subsystems such as SAS/SCL and SAS/AF are not implemented.

Jenner ships a family of visualizer procedures — interactive 3-D and 2-D landscapes driven straight from a PROC step. PROC SPLATVIZ turns a dataset into a cloud of density you fly through:

A splat visualization of customer-churn data — a gas-like cloud of density inside a 3-D box

Scatter and splat landscapes, statistics panels, tree and map landscapes, decision-table and evidence cakes, cluster panes and association-rule floors — every one of them a PROC, each with a JSON view spec and an API an AI agent can drive.

Explore Visual Data Mining

Jenner passes all 58 datasets in the NIST Statistical Reference Datasets benchmark — the standard third-party test suite for verifying statistical-software accuracy. That includes the high-difficulty linear-regression cases (Filip, Wampler1–5, Longley), nonlinear regression edge cases (Bennett5, ENSO, MGH09), and the f64-pathological SmLs07 / SmLs08 / SmLs09 ANOVA cluster — the canonical reproducer for catastrophic floating-point cancellation that bounds every double-precision statistical package at LRE ≈ 4 to 5. Jenner reaches LRE 15 on those three datasets (the f64 mantissa exhaustion point) through automatic precision recovery that engages without configuration when the data needs it.

The full per-dataset report, with Jenner's input scripts, computed outputs, and matched-against-NIST analysis for every test, lives at NIST StRD Accuracy. On this benchmark family Jenner's results sit above the historical hierarchy of every major statistical package — see the comparison section for citations against Excel, SPSS, Gretl, Stata, SAS, and R.

Pull US GDP from the Federal Reserve, population from the World Bank, merge them, and forecast GDP per capita with ARIMA:

SAS
/* Connect to FRED and World Bank */
libname fred sasefred
idlist="GDP" startdt="2000-01-01" enddt="2024-12-31";
libname wb sasewbgo
idlist='SP.POP.TOTL'
countrylist='USA' startyr=2000 endyr=2024;
/* Pull quarterly GDP and tag each quarter with its year */
data gdp;
set fred.gdp;
year = year(input(date, yymmdd10.));
gdp = value;
format gdp comma12.;
keep year gdp date;
run;
/* Pull population */
data pop;
set wb.sp_pop_totl;
population = value;
keep year population;
run;
libname fred clear;
libname wb clear;
/* Merge on year, compute per-capita GDP */
proc sort data=gdp; by year; run;
proc sort data=pop; by year; run;
data combined;
merge gdp pop;
by year;
gdp_per_capita = gdp / population;
run;
/* Forecast 4 years with ODS chart output */
ods graphics on;
proc arima data=combined;
identify var=gdp_per_capita(1) nlag=8;
estimate p=1;
forecast lead=4 out=forecast;
run;

The ods graphics on statement produces a forecast plot with observed values, fitted model, and 95% confidence intervals:

ARIMA forecast of GDP per capita

The fastest way to try Jenner is to sign up for Jenner Workspace and start writing programs in your browser. You can also download Jenner to run on your own machine — Windows, macOS, or Linux, each as a native binary (requires a license agreement — contact [email protected]).

  • Jenner Workspace


    Sign up and start writing programs in your browser -- no installation required

  • Installation


    Run Jenner in the cloud, or install the native binary on Windows, macOS, or Linux

  • First Program


    Write and run your first Jenner program from the command line

  • Language Reference


    Complete reference for DATA steps, procedures, functions, and macros

  • Data Access


    Read and write CSV, Parquet, Avro and SAS7BDAT, and connect to PostgreSQL, Oracle, Snowflake and more

  • File Formats


    How Jenner detects a format, and which engines it reads and writes

CapabilityJennerSAS
Runs most SAS programsYesYes
Native CSV and Parquet I/OYesNo
Read SAS7BDAT datasetsYesYes
Write SAS7BDAT datasetsYes, nativelyYes
Mix SAS7BDAT, Parquet, Avro and CSV in one programYesNo
SAS Transport (XPT) read/writeYesYes
Native binaries for Windows, macOS and LinuxYesNo native macOS
No per-seat license requiredYesNo
Standalone binaryYesNo
Native Jupyter kernelYesNo
Built-in database connectorsYesAdd-on
ODS-style graphicsYesYes
LLM integration (PROC AI)YesNo
Passes full NIST StRD benchmark (58 / 58)YesStrong, with caveats on hardest f64 cases
Auto-recovers precision on stiff dataYesNo
SAS/SCL, SAS/AFNoYes

See the full SAS alternative comparison for licensing cost, platform support, and syntax-compatibility details, the Altair SLC / WPS comparison if you run SAS-language code on SLC, or what's different from SAS for a syntax-level breakdown.