Skip to content

Latest commit

 

History

History
100 lines (77 loc) · 4.13 KB

File metadata and controls

100 lines (77 loc) · 4.13 KB

Gossamer — Next Steps

Completed (2026-03-21/22)

  • Gossamer repo created (RSR template, all workflows)
  • Zig FFI builds (libgossamer.so, 20 symbols, WebKitGTK)
  • Idris2 ABI (Types.idr, Foreign.idr, Layout.idr)
  • Ephapax compiler restored (15 crates, 172+ tests)
  • Region-linear fusion in type checker
  • __ffi() intrinsic (parser → type checker → interpreter → WASM)
  • Native FFI via dlopen (real GTK window created)
  • String FFI (C strings bypass region system)
  • Core .eph modules (Shell, Bridge, Capabilities)
  • Ephapax tooling (LSP, DAP, tree-sitter, VS Code, linter, formatter, spec, conformance, stdlib, asdf)
  • Ephapaxiser updated with region types
  • IDApTIK UMS Gossamer wrapper (Shell.eph, LevelEditor.eph, main.eph)
  • IDApTIK UMS launched in Gossamer — visible window with styled UI
  • macOS/Windows platform stubs
  • arXiv paper with formal type rules
  • v0.1.0 release on GitHub
  • Mirrored to GitLab + Bitbucket
  • GitHub Pages site + dev.to draft

Next Session Priorities

P0 — Wire IPC (make buttons work) [DONE 2026-03-29]

All subsequent phases (P1–P3 platforms, integration tests, packaging) completed 2026-04-03. See CHANGELOG.md for details.

All 18 IPC commands wired through gossamer_channel_bind in main.eph:

  • 6 disk/system commands (load_level, save_level, validate_level_abi, list_levels, export_level_config, get_system_info)
  • 12 level-building commands (create_level, destroy_level, add_zone, add_device, add_guard, add_dog, add_drone, set_mission, set_physical, validate_level, serialize_level, deserialize_level) Sidebar buttons in App.res call gossamerInvoke() for each command. EditorLevelCmd.res provides typed ReScript wrappers for all 12.

P1 — Ephapax SSG [PARTIAL — 2026-03-29]

AWK SSG pipeline working: 5 pages (index, architecture, getting-started, ephapax-primer, platform-support) built from site/src/content/ via scripts/md-to-html.awk + template-sub.awk. Site sources committed.

Remaining: rewrite SSG in Ephapax (the full dogfooding goal — Gossamer's website built by Gossamer's language, not AWK).

P2 — arXiv submission [BLOCKED — user login required]

Upload docs/whitepapers/gossamer-arxiv-paper.tex to arxiv.org. Category: cs.PL (Programming Languages) or cs.SE (Software Engineering). Also submit the dyadic paper from the ephapax repo.

P3 — Phase 2 platforms [DONE 2026-03-29]

Windows WebView2: Full COM callback chain (EnvCompletedHandler + ControllerCompletedHandler) with event-synchronised create(). IPC handler (WebMessageHandler) receives chrome.webview.postMessage, dispatches to bindings map, sends responses via ExecuteScript. Platform detection query API (6 exports). Idris2 ABI declarations. Cross-compilation Justfile recipes. macOS Cocoa already had full lifecycle — verified IPC dispatch path. Version bumped to 0.3.0.

P4 — Ecosystem visibility

  • Submit to awesome-zig (PR to awesome list)
  • Submit to awesome-wasm
  • Post dev.to announcement (draft at site/devto-announcement.md)
  • Post to lobste.rs / Hacker News
  • OpenSSF Scorecard badge

P5 — IDApTIK full migration [DONE — 2026-04-12]

  • Wire all 12 UMS FFI functions through IPC (done in P0, 2026-03-29)
  • Migrate UMS from Tauri to Gossamer for desktop (2026-04-12): idaptik-ums/deno.json tasks updated (gossamer:dev / gossamer:build); Justfile ums-gossamer recipe added; TOPOLOGY and llm-warmup-dev.md updated; stale ums-tauri / ums-tauri-test removed
  • Mobile platform support: iOS screen size fixed, Android JNI constructor fixed (2026-04-03)
  • Test with real level editing workflow (manual — requires Jonathan)

P6 — Ephapax compiler improvements

  • WASM FFI imports (not just interpreter dlopen)
  • Module system (import Gossamer.Shell)
  • Closure conversion (currently stubbed)
  • Multi-file compilation

Architecture Reference

Ephapax (.eph) — app code, linear types, regions
    ↓ __ffi()
Zig (.zig) — platform webview (GTK/WebKit/WebView2)
    ↓ C ABI
Idris2 (.idr) — formal proofs (compile-time, erased)

Runtime: just Zig + GTK. No GC, no VM, ~1-3MB.