90 lines
3.9 KiB
Markdown
90 lines
3.9 KiB
Markdown
---
|
|
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.
|
|
|
|
<pre>fun outer(x)
|
|
fun inner(y)
|
|
return x + y
|
|
return inner
|
|
|
|
f = outer(10)
|
|
print(f(5)) // 15</pre>
|
|
|
|
#### 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"}
|