--- layout: post published: true author: hanez author_email: you@hanez.org author_url: https://hanez.org noToc: false title: Announcing Fun 0.40.5 description: Nested functions, Rust integration, and CI automation date: 2026-04-17 date_updated: 2026-04-18 00:17:13 categories: - news - project - release tags: - fun - programming - nested-functions - rust - automation --- 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))  // 15
#### Rust & 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 `./examples` directory 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`, and `libressl` to 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](https://git.xw3.org/fun/fun){:class="git"} or check out the updated [Documentation](/documentation/). Happy hacking, and remember: **Fun is Fun!** Johannes Findeisen (hanez) - [hanez@fun-lang.xyz](mailto:hanez@fun-lang.xyz){:class="mail"}