Compiled languages such as C++, Swift, and Fortran are traditionally experienced through ahead-of-time compilation: write a program, build it, run it, inspect the result, and repeat. That model works well for production software, but it is awkward for exploratory programming, scientific computing, teaching, visualization, and rapid experimentation, where users expect REPL-style execution, notebooks, rich outputs, package access, and debugging.
This talk presents an open source architecture for bringing compiled languages into Jupyter through compiler-native REPLs and kernels. The core idea is shared across projects such as clang-repl/xeus-cpp, swift-repl/xeus-swift, and LFortran/xeus-lfortran: reuse the language’s real compiler frontend, preserve the semantics and optimization pipeline of the compiled language, and swap the traditional “compile a whole program” model for incremental execution inside notebook cells.
On native platforms, these systems can use LLVM ORC JIT to compile and execute code interactively while still allowing access to compiled libraries, rich Jupyter display, widgets, plotting, threading, OpenMP, CUDA, and debugger support. In the browser, the execution model changes: the compiler toolchain is built to WebAssembly, cells are compiled to wasm objects, linked with wasm-ld, and loaded dynamically inside JupyterLite. This makes it possible to run C++, Swift, and Fortran-style notebook workflows without a local toolchain.
The talk will use xeus-cpp, xeus-cpp-lite, xeus-swift, and xeus-lfortran as concrete examples of a broader pattern: if a language has a compiler stack, an incremental execution model, and a Jupyter kernel interface, it can become an interactive computing environment. Along the way, we will discuss clang-repl, Swift and LFortran REPLs, ORC JIT, wasm-ld, LLDB-DAP, JupyterLite, conda-forge, and emscripten-forge, and show how these open source ecosystems fit together.
The goal is not only to demonstrate interactive C++, Swift, and Fortran notebooks, but to show how compiler infrastructure can make traditionally compiled languages feel exploratory, shareable, debuggable, and browser-native.