A 5.9MB OCaml binary that renders SX pages directly using SDL2 + Cairo, bypassing HTML/CSS/JS entirely. Can fetch live pages from sx.rose-ash.com or render local .sx files. Architecture (1,387 lines of new code): sx_native_types.ml — render nodes, styles, layout boxes, color palette sx_native_style.ml — ~40 Tailwind classes → native style records sx_native_layout.ml — pure OCaml flexbox (measure + position) sx_native_render.ml — SX value tree → native render nodes sx_native_paint.ml — render nodes → Cairo draw commands sx_native_fetch.ml — HTTP fetch via curl with SX-Request headers sx_native_app.ml — SDL2 window, event loop, navigation, scrolling Usage: dune build # from hosts/native/ ./sx_native_app.exe /sx/ # browse sx.rose-ash.com home ./sx_native_app.exe /sx/(applications.(native-browser)) ./sx_native_app.exe demo/counter.sx # render local file Features: - Flexbox layout (row/column, gap, padding, alignment, grow) - Tailwind color palette (stone, violet, white) - Rounded corners, borders, shadows - Text rendering with font size/weight - Click navigation (links trigger refetch) - Scroll with mouse wheel - Window resize → re-layout - URL bar showing current path Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
26 lines
1.1 KiB
Plaintext
26 lines
1.1 KiB
Plaintext
(div
|
|
:class "flex flex-col items-center gap-6 p-8 bg-stone-50"
|
|
(h1 :class "text-3xl font-bold text-stone-800" "SX Native Browser")
|
|
(p :class "text-stone-500" "Rendering s-expressions directly to pixels")
|
|
(div
|
|
:class "flex gap-4 items-center"
|
|
(div
|
|
:class "p-4 rounded-lg bg-white border border-stone-200 shadow"
|
|
(h3 :class "font-bold text-stone-700" "No HTML")
|
|
(p :class "text-sm text-stone-500" "This is not a web page"))
|
|
(div
|
|
:class "p-4 rounded-lg bg-white border border-stone-200 shadow"
|
|
(h3 :class "font-bold text-stone-700" "No CSS")
|
|
(p
|
|
:class "text-sm text-stone-500"
|
|
"Tailwind classes parsed to native styles"))
|
|
(div
|
|
:class "p-4 rounded-lg bg-white border border-stone-200 shadow"
|
|
(h3 :class "font-bold text-stone-700" "No JavaScript")
|
|
(p :class "text-sm text-stone-500" "The SX evaluator does everything")))
|
|
(div
|
|
:class "p-6 rounded-lg bg-violet-600"
|
|
(p
|
|
:class "text-white text-lg font-bold"
|
|
"5,000 lines of OCaml instead of 35 million lines of browser engine")))
|