# GraphiC.jl: Zero-latency vector scientific plotting engine (pure SVG output)

**URL:** <https://discourse.julialang.org/t/graphic-jl-zero-latency-vector-scientific-plotting-engine-pure-svg-output/139841>\
**Category:** Package Announcements\
**Created:** [October 5, 2026, 4:50pm UTC](https://discourse.julialang.org/t/graphic-jl-zero-latency-vector-scientific-plotting-engine-pure-svg-output/139841 "2026-10-05T16:50:38Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![jamesrome](https://avatars.discourse-cdn.com/v4/letter/j/c57346/32.png) [@jamesrome](https://discourse.julialang.org/u/jamesrome)\
**Post date:** [October 5, 2026, 4:50pm UTC](https://discourse.julialang.org/t/graphic-jl-zero-latency-vector-scientific-plotting-engine-pure-svg-output/139841/1 "2026-10-05T16:50:39Z")

</div>

Sorry about the formatting of my original post—I used an AI assistant to help draft it, and I realize now that the bullet points and style made it look like automated spam!

I am a retired plasma physicist (MIT Sc.D. 1970, worked at a national laboratory for many years). Back in the 1980s, I wrote a scientific graphics library in C called GraphiC. Over the past couple of months, I modernized the C99 core and added a native vector SVG driver with zero external dependencies (just standard libc and libm).

I have been learning Julia, so I put together a direct Julia module that interfaces with the C library via `ccall` to emit pure vector SVG plots with sub-millisecond execution.

Here is a simple example:

```julia-auto
julia

```

using GraphiC  
x = range(0, 10, length=200)  
y = sin.(x) .\* exp.(-0.2 .\* x)  
GraphiC.plot(x, y;  
title=“Damped Harmonic Motion”,  
xlabel=“Time (s)”,  
ylabel=“Amplitude”,  
color=GraphiC.BLUE,  
thick=1.5,  
grid=true,  
filename=“damped\_sine.svg”)

The 2D C engine and modern user manual are available on my personal website at jamesrome dot com (the Julia wrapper is not yet an official registered package).

As someone new to Julia, I would really appreciate feedback from experienced Julia programmers on whether wrapping a lightweight C vector engine like this is useful to the community, and how I can structure the wrapper to be more idiomatic.

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/julialang/original/3X/1/2/12829a7ba92b924d4ce81099cbf99785bee9b405.png) [@system](https://discourse.julialang.org/u/system)\
**Post date:** [October 5, 2026, 6:35pm UTC](https://discourse.julialang.org/t/graphic-jl-zero-latency-vector-scientific-plotting-engine-pure-svg-output/139841/2 "2026-10-05T18:35:00Z")

</div>



---

<div class="post-metadata">

**Author:** ![mbauman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbauman/32/31082_2.png) [@mbauman](https://discourse.julialang.org/u/mbauman)\
**Post date:** [October 5, 2026, 6:36pm UTC](https://discourse.julialang.org/t/graphic-jl-zero-latency-vector-scientific-plotting-engine-pure-svg-output/139841/3 "2026-10-05T18:36:12Z")

</div>

Welcome to Discourse @jamesrome. Please do not use AI to create your posts here — we’re humans here to talk with other humans.

Tell us about the project yourself, please!

You should be able to edit your post above, and links to GitHub should be allowed even for first-time posters. It seems, though, that your GitHub account is non-existent.

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/julialang/original/3X/1/2/12829a7ba92b924d4ce81099cbf99785bee9b405.png) [@system](https://discourse.julialang.org/u/system)\
**Post date:** [October 5, 2026, 8:17pm UTC](https://discourse.julialang.org/t/graphic-jl-zero-latency-vector-scientific-plotting-engine-pure-svg-output/139841/4 "2026-10-05T20:17:10Z")

</div>


