fun> Announcing Fun 0.40.5
We are thrilled to announce the release of Fun version 0.40.5! This update represents a major leap forward in language capabilities, developer experience, and project infrastructure since our last major announcement (v0.37.62).
Key Highlights of Version 0.40.5
Nested Functions & Higher-Order Patterns
The most significant language enhancement is the addition of nested functions in the Fun parser. This allows for cleaner encapsulation and enables powerful functional programming patterns, such as closures and advanced higher-order function implementations.
fun outer(x)
fun inner(y)
return x + y
return inner
f = outer(10)
print(f(5)) // 15Rust & C++ Integration
Fun is getting more “multi-lingual.” We’ve introduced support for implementing opcodes in Rust, allowing developers to leverage Rust’s safety and performance within the Fun VM. Additionally, we’ve started evaluating C++ integration for those who need it.
Improved Tooling: funstx
We’ve introduced funstx, a dedicated linter for Fun. It helps maintain the “Indentation is Truth” philosophy by ensuring your code follows the strict 2-space indentation rule and other stylistic consistency checks.
CI Automation & Reliability
To ensure the stability of the language as it grows, we’ve implemented a full GitHub Actions CI workflow. Every commit now triggers automated execution of our extensive examples library, catching regressions early.
VM Configuration & Performance
The Fun VM is now more flexible than ever. Key parameters like MAX_FRAMES, STACK_SIZE, and OUTPUT_SIZE can now be configured at build time via CMake defines (-D), allowing you to tune the VM for specific environments (from embedded systems to beefy servers).
Changelog (v0.37.62 to v0.40.5)
Added
- Nested Functions: Full support in the parser (v0.40.0).
- Rust Integration: Build and link Rust-based opcode libraries (v0.38.0).
- GitHub Actions: CI Automated testing and example validation (v0.39.15).
- Linter (funstx): New tool to enforce code style and indentation (v0.39.0).
- Configurable VM: Build-time tuning of memory limits via CMake (v0.40.5).
- Specification v0.4: Updated language specification.
- New Stdlib Modules: AES256 support, improved asyncio/scheduler, and more.
Changed
- Documentation Relocation: All documentation moved to
./web/documentation/for better website integration. - Website Overhaul: The website code was moved to
./web/for easier maintenance. - Example Refactoring: Reorganized the
./examplesdirectory for better clarity and CI integration. - Code Style: Standardized all C files to two-space indentation.
Removed (Cleanup & Focus)
- Removed support for
libsql,tcltk,notcurses, andlibresslto streamline the core and focus on more modern alternatives (v0.40.2 - v0.40.5).
Fixed
- Improved line number reporting in error messages (v0.39.15).
- Various bug fixes in the VM and standard library modules.
The Road to 1.0
As always, Fun remains an experiment, but with version 0.40.5, we are closer than ever to a stable 1.0. We’ve focused on cleaning up experimental features that didn’t fit our minimalism philosophy while adding the powerful primitives needed for real-world hacking.
Want to try it out? Head over to our Git Repository or check out the updated Documentation.
Happy hacking, and remember: Fun is Fun!
Johannes Findeisen (hanez) - hanez@fun-lang.xyz

