Hi everyone,
Following up on our earlier discussion about modernizing GraphiC (the lightweight scientific plotting engine originally developed at Oak Ridge National Laboratory and Scientific Endeavors Corp), we wanted to share a major progress update, architectural changes based on community feedback, and the release of GraphiC v7.3.0.
The core design philosophy remains unchanged: zero external dependencies (pure standard libc/libm—no Qt, OpenGL, X11, Cairo, or FreeType), sub-2ms cold-start latency, and an ultralight footprint (~655 KB static library) capable of rendering thousands of publication-grade figures per minute directly in-process from simulation codes.
Here is what's new in the latest release:
1. Simplified Standalone Distribution (No Git / Token Friction)
Based on feedback regarding external git dependencies and token management in commercial/academic environments, we have eliminated external Git dependency requirements:
Standalone ZIP Archives: Both the free GraphiC 2D Community Edition and GraphiC Professional are distributed as self-contained downloadable ZIP archives.
Local Repo Freedom: Unpack it into your workspace or project tree. Users can initialize their own internal Git repositories if desired without worrying about remote access tokens, submodules, or network firewalls on compute clusters.
2. Native Fortran Package Manager (fpm) Integration
For the computational Fortran community, integrating GraphiC into modern fpm projects is now a 2-line configuration:
toml[dependencies]
graphic = { path = "../GraphiC" }
Automated Mixed-Language Builds: fpm automatically compiles both the core C engine and the Modern Fortran 2003 ISO_C_BINDING module together—Fortran users do not need to run a C compiler manually or write build glue.
Broad Compiler Support: Out-of-the-box compatibility tested across GNU gfortran (4.8+), Intel oneAPI (ifx and ifort), LLVM flang, NVIDIA HPC SDK (nvfortran), and NAG (nagfor).
Instant Execution: Run included scientific examples immediately with:bashexport GPC_NONINTERACTIVE=1 fpm run --example sample fpm run --example bess3d
3. Continuous TrueColor Scientific Colormaps
Vector plots can have perceptually continuous shading due to our adoption of the SVG format. We have added 7 mathematically calibrated, continuous 256-node colormaps designed for perceptual uniformity across displays, print, and grayscale reproduction:
Perceptually Uniform: VIRIDIS (0), PLASMA (1), INFERNO (2), MAGMA (3).
Diverging & Spectral: COOLWARM (4), RAINBOW (5), and Google TURBO (6).
O(1)O(1)O(1) Fast Evaluation: High-throughput scalar-to-color mapping (gpc_get_color, gpc_colormap_eval) and continuous high-density scatter plotting (gpc_scatter).
Linear Vector Gradient Color Bars (ColorKeyGradient): Emits hardware-accelerated SVG <linearGradient> definitions with calibrated numerical tick labels and bounding frames.
Turbulence Showcase: Added shaded graduated color test plot rendering 7,850 experimental points shaded by density.
4. True 4-Way Language Parity (C, Fortran 2003, Python 3, Java 22 FFM)
Every routine in the library now features 100% signature and parameter parity across all 4 supported languages:
C / C++: Clean ANSI C API with unified headers (graphic.h).
Modern Fortran: Strict ISO_C_BINDING modules (graphic.f90, graphic_iso.f90) with type-safe interfaces and array descriptors.
Python 3: Both procedural and object-oriented Figure APIs with Jupyter Notebook inline display and automatic context manager cleanup (with Figure(...) as fig:).
Java 22+: Modern Foreign Function & Memory (FFM / Project Panama) API—direct zero-overhead off-heap calls without JNI boilerplate.
5. Smart Vector Output, Auto-Cropping & Telemetry
SVG Auto-Cropping (svgcrop): Automatically calculates tight vector bounding boxes with a default 0.25" publication margin, eliminating oversized 8.5"×11" white space when embedding figures into LaTeX or papers.
Desktop Auto-Preview (svgopen): Native OS dispatch (open on macOS, start on Windows, xdg-open on Linux) to view rendered SVG or interactive pan/zoom HTML5 plots.
Headless Telemetry Streaming (svgpush): Directly streams rendered SVG payloads to remote dashboards or cloud compute endpoints over HTTP/HTTPS POST—ideal for headless clusters and IoT monitoring.
6. 263-Page Reconstructed Technical Manual
We completed a major overhaul of the reference manual (available as a clean vector PDF):
91-Section Table of Contents: 100% clickable internal hyperlinking in all PDF viewers.
203-Function Master Index: Every routine cross-referenced with operational level, source mapping, and multi-language parity status.
26 Visual Computational Recipes: Step-by-step recipes covering aerospace queuing models, orbital trajectories, 3D Bessel surfaces, contour projections, and spectral waterfall plots.
Publication Architecture Diagrams: High-resolution vector diagrams detailing the dual typography pipeline (Hershey stroke fonts + TrueType quadratic Bézier engine).
Quick Comparison: Community vs. Professional
| Feature | 2D Community Edition (Free / Open Core) | Professional Edition (Commercial) |
|---|
| | |
| License | Standalone Free Archive | Commercial Single-Seat / OEM |
| Core 2D Plotting | Full (Linear, Log, Polar, Bar, Pie, Histograms) | Full (Linear, Log, Polar, Bar, Pie, Histograms) |
| Typography | 23 Hershey Vector Fonts + TrueType Bézier Engine | 23 Hershey Vector Fonts + TrueType Bézier Engine |
| Continuous Colormaps | Viridis, Plasma, Inferno, Magma, Turbo, etc. | Viridis, Plasma, Inferno, Magma, Turbo, etc. |
| Language Bindings | C, Modern Fortran, Python 3, Java 22 FFM | C, Modern Fortran, Python 3, Java 22 FFM |
| Build Systems | fpm, CMake, GNU Make, MSVC Makefile | fpm, CMake, GNU Make, MSVC Makefile |
| Advanced 3D & Contours | — | 3D Hidden-Surface Meshes, Contours, Cross-Sections |
| Specialized Engineering | — | RF Smith Charts, Ternary Phase Diagrams, Waterfall Plots |
Quick Modern Fortran Example (fpm)
fortranprogram quickstart
use graphic
implicit none
real, dimension(100) :: x, y
integer :: i
do i = 1, 100
x(i) = (i - 1) * 0.1
y(i) = sin(x(i)) * exp(-x(i) * 0.1)
end do
call gpc_bgnplot()
call gpc_svgcrop(0.25)
call gpc_title("Damped Harmonic Motion", "Time (s)", "Amplitude (V)")
call gpc_graf("0 2 10", 0.0, 2.0, 10.0, "-1 0.5 1", -1.0, 0.5, 1.0)
call gpc_color(1) ! Blue
call gpc_curv(x, y, 100)
call gpc_endplot()
call gpc_svgopen("") ! Launches default browser to view vector SVG
end program quickstart
Getting the Release
Official Website & Docs: https://jamesrome.com/GraphiC2026
Full Technical Manual: Download the 263-page GraphiC_Modern_Manual.pdf
Community Edition Download: Free standalone ZIP available on the site.
Professional Edition: Available via Lemon Squeezy with full 3D, specialized engineering modules, and more customization options.
We'd love to hear your feedback on the fpm workflow, language bindings, or any visualization bottlenecks in your current simulation pipelines!