diff --git a/CMakeLists.txt b/CMakeLists.txt index 7fec0b8..c0774eb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,18 +37,18 @@ else() set(_FUN_WITH_RUST_STATE "DISABLED") endif() -if(FUN_BUILD_DOCS) - set(_FUN_BUILD_DOCS "ENABLED") -else() - set(_FUN_BUILD_DOCS "DISABLED") -endif() +#if(FUN_BUILD_DOCS) +# set(_FUN_BUILD_DOCS "ENABLED") +#else() +# set(_FUN_BUILD_DOCS "DISABLED") +#endif() message(STATUS "==== Fun build options ====") message(STATUS " FUN_DEBUG: ${_FUN_DEBUG_STATE}") message(STATUS " FUN_USE_MUSL: ${_FUN_USE_MUSL_STATE}") message(STATUS " FUN_WITH_CPP: ${_FUN_WITH_CPP_STATE}") message(STATUS " FUN_WITH_RUST: ${_FUN_WITH_RUST_STATE}") -message(STATUS " FUN_BUILD_DOCS: ${_FUN_BUILD_DOCS}") +#message(STATUS " FUN_BUILD_DOCS: ${_FUN_BUILD_DOCS}") message(STATUS "===========================") # Convenience aggregate target (like 'build' in Makefile) diff --git a/cmake/Extensions/Extensions.cmake b/cmake/Extensions/Extensions.cmake index 215a99b..3e21523 100644 --- a/cmake/Extensions/Extensions.cmake +++ b/cmake/Extensions/Extensions.cmake @@ -11,27 +11,27 @@ function(_fun_print_feature name flag) endfunction() # Include each extension module -include(${CMAKE_SOURCE_DIR}/cmake/Extensions/SQLITE.cmake) -include(${CMAKE_SOURCE_DIR}/cmake/Extensions/PCSC.cmake) -include(${CMAKE_SOURCE_DIR}/cmake/Extensions/JSON.cmake) -include(${CMAKE_SOURCE_DIR}/cmake/Extensions/INI.cmake) -include(${CMAKE_SOURCE_DIR}/cmake/Extensions/XML2.cmake) -include(${CMAKE_SOURCE_DIR}/cmake/Extensions/PCRE2.cmake) include(${CMAKE_SOURCE_DIR}/cmake/Extensions/CURL.cmake) -include(${CMAKE_SOURCE_DIR}/cmake/Extensions/REPL.cmake) -include(${CMAKE_SOURCE_DIR}/cmake/Extensions/OPENSSL.cmake) +include(${CMAKE_SOURCE_DIR}/cmake/Extensions/INI.cmake) +include(${CMAKE_SOURCE_DIR}/cmake/Extensions/JSON.cmake) include(${CMAKE_SOURCE_DIR}/cmake/Extensions/KCGI.cmake) +include(${CMAKE_SOURCE_DIR}/cmake/Extensions/OPENSSL.cmake) +include(${CMAKE_SOURCE_DIR}/cmake/Extensions/PCRE2.cmake) +include(${CMAKE_SOURCE_DIR}/cmake/Extensions/PCSC.cmake) +include(${CMAKE_SOURCE_DIR}/cmake/Extensions/REPL.cmake) +include(${CMAKE_SOURCE_DIR}/cmake/Extensions/SQLITE.cmake) +include(${CMAKE_SOURCE_DIR}/cmake/Extensions/XML2.cmake) # Summary of extension toggles message(STATUS "---- Fun extension summary ----") -_fun_print_feature("SQLite (FUN_WITH_SQLITE)" FUN_WITH_SQLITE) -_fun_print_feature("PCSC (FUN_WITH_PCSC)" FUN_WITH_PCSC) -_fun_print_feature("json-c (FUN_WITH_JSON)" FUN_WITH_JSON) -_fun_print_feature("INI/iniparser (FUN_WITH_INI)" FUN_WITH_INI) -_fun_print_feature("libxml2 (FUN_WITH_XML2)" FUN_WITH_XML2) -_fun_print_feature("PCRE2 (FUN_WITH_PCRE2)" FUN_WITH_PCRE2) _fun_print_feature("curl (FUN_WITH_CURL)" FUN_WITH_CURL) -_fun_print_feature("REPL (FUN_WITH_REPL)" FUN_WITH_REPL) -_fun_print_feature("OpenSSL (FUN_WITH_OPENSSL)" FUN_WITH_OPENSSL) +_fun_print_feature("iniparser (FUN_WITH_INI)" FUN_WITH_INI) +_fun_print_feature("json-c (FUN_WITH_JSON)" FUN_WITH_JSON) _fun_print_feature("kcgi (FUN_WITH_KCGI)" FUN_WITH_KCGI) +_fun_print_feature("libxml2 (FUN_WITH_XML2)" FUN_WITH_XML2) +_fun_print_feature("OpenSSL (FUN_WITH_OPENSSL)" FUN_WITH_OPENSSL) +_fun_print_feature("PCRE2 (FUN_WITH_PCRE2)" FUN_WITH_PCRE2) +_fun_print_feature("PCSC-Lite (FUN_WITH_PCSC)" FUN_WITH_PCSC) +_fun_print_feature("REPL (FUN_WITH_REPL)" FUN_WITH_REPL) +_fun_print_feature("SQLite (FUN_WITH_SQLITE)" FUN_WITH_SQLITE) message(STATUS "--------------------------------") diff --git a/web/_layouts/default.html b/web/_layouts/default.html index 7161dd2..43e8326 100644 --- a/web/_layouts/default.html +++ b/web/_layouts/default.html @@ -18,7 +18,7 @@ layout:

- Page generated at: {{ site.time | date: "%b %-d, %Y" }} ({{ site.time | date: "%Z" }}) using Jekyll and xw3 on {{ site.os }}
+ Page generated at: {{ site.time | date: "%b %-d, %Y" }} using Jekyll and xw3 on {{ site.os }}

diff --git a/web/_layouts/page.html b/web/_layouts/page.html index b1d2665..0a15e85 100644 --- a/web/_layouts/page.html +++ b/web/_layouts/page.html @@ -5,8 +5,8 @@ layout: default

{{ site.title }} {{ page.title }}

- {% if page.noDate != true %} + {% if page.noDate != true %} {% if page.subtitle %}

{{ page.subtitle }}

{% endif %}
diff --git a/web/_layouts/post.html b/web/_layouts/post.html index 673d229..d28edd5 100644 --- a/web/_layouts/post.html +++ b/web/_layouts/post.html @@ -5,10 +5,7 @@ layout: default

{{ site.title }} {{ page.title }}

- +
{{ content }} diff --git a/web/_posts/2026-01-25-announcing-fun-0.37.62.md b/web/_posts/2026-01-25-announcing-fun-0.37.62.md index 16c4e2d..7798807 100644 --- a/web/_posts/2026-01-25-announcing-fun-0.37.62.md +++ b/web/_posts/2026-01-25-announcing-fun-0.37.62.md @@ -8,7 +8,7 @@ noToc: false title: Announcing Fun 0.37.62 description: Homepage and Blog date: 2026-01-25 -date_updated: 2026-04-11 00:56:03 +date_updated: 2026-05-11 categories: - news - project @@ -32,7 +32,7 @@ Fun is a highly strict yet highly simple programming language that draws inspira ### Important: This is an Experiment -Please note: Fun is an experimental language and should be treated as such. While Fun works, it has many known and unknown bugs. We will not declare Fun as stable until we reach the 1.0 release. This is a project born out of curiosity and passion for elegant code, not production readiness — at least not yet. +Please note: Fun is an experimental language and should be treated as such. While Fun works, it has many known and unknown bugs. We will not declare Fun as stable until we reach the 1.0 release. This is a project born out of curiosity and passion for elegant code, not production readiness - at least not yet. ### What Makes Fun... Fun? @@ -40,12 +40,12 @@ Please note: Fun is an experimental language and should be treated as such. Whil Fun is built on the idea that coding should be enjoyable, elegant, and consistent. Our manifesto includes core principles like: -- Fun is Fun – Programming should spark creativity, not frustration -- Fun Uses Nothing – Minimalism is power; no unnecessary features or syntax variations -- Indentation is Truth – Two spaces, always (no tabs, no debates, no four-space wars) -- One Way to Do It – No clutter, no 15 ways of writing the same thing. Simplicity means clarity -- Hackable by Nature – Small and embeddable, like Lua. Easy to understand, extend, and tinker with -- Beautiful Defaults – A language that doesn't need linters, formatters, or style guides. Beauty is built in +- Fun is Fun - Programming should spark creativity, not frustration +- Fun Uses Nothing - Minimalism is power; no unnecessary features or syntax variations +- Indentation is Truth - Two spaces, always (no tabs, no debates, no four-space wars) +- One Way to Do It - No clutter, no 15 ways of writing the same thing. Simplicity means clarity +- Hackable by Nature - Small and embeddable, like Lua. Easy to understand, extend, and tinker with +- Beautiful Defaults - A language that doesn't need linters, formatters, or style guides. Beauty is built in ### What's New in Specification v0.3 (and Fun 0.37.62) @@ -115,7 +115,7 @@ print(thread_join(tid)) // 25 Fun provides a clean, readable syntax with: -- Strict indentation-based structure (2 spaces, no semicolons) +- Strict indentation-based structure (two spaces, no semicolons) - Type safety with no implicit numeric coercions - Bounds-checked operations to prevent common errors - Higher-order functions: map, filter, reduce for functional programming @@ -136,33 +136,33 @@ A language that feels like home for developers who love minimal, elegant tools, Everybody is welcome to participate! However, before you can get started, you need to contact me at [hanez@fun-lang.org](mailto:hanez@fun-lang.org){:class="mail"} to request an account on our Git server. -Important: Fun is not developed on third-party Git servers like GitHub or GitLab. All Fun infrastructure is self-hosted at git.xw3.org. This keeps us independent and aligned with the hacker spirit of the project — we control our tools, our code, and our community. +Important: Fun is not developed on third-party Git servers like GitHub or GitLab. All Fun infrastructure is self-hosted at git.xw3.org. This keeps us independent and aligned with the hacker spirit of the project - we control our tools, our code, and our community. ### Getting Started If you're curious about Fun, check out: - [Git Repository](https://git.xw3.org/fun/fun){:class="git"} -- [Fun Handbook](/documentation/handbook/) -- [Fun REPL Guide](/documentation/repl/) -- [Specification v0.3](https://git.xw3.org/fun/fun/src/branch/main/spec/v0.3.md){:class="git"} +- [Fun Handbook](https://fun-lang.xyz/documentation/handbook/) +- [Fun REPL Guide](https://fun-lang.xyz/documentation/repl/) +- [Specification v0.4](https://git.xw3.org/fun/fun/src/branch/main/spec/v0.4.md){:class="git"} - [Examples](https://git.xw3.org/fun/fun/src/branch/main/examples){:class="git"} - [Standard Library](https://git.xw3.org/fun/fun/src/branch/main/lib){:class="git"} -- [Community](/community/) +- [Community](https://fun-lang.xyz/community/) -The examples directory contains demonstrations of most Fun features, from basic "Hello, World!" to threading, networking, classes, and more. The lib directory includes modules written in Fun itself — and in the future, most enhancements will be written in Fun rather than C. +The examples directory contains demonstrations of most Fun features, from basic "Hello, World!" to threading, networking, classes, and more. The lib directory includes modules written in Fun itself - and in the future, most enhancements will be written in Fun rather than C. ### For Developers -- [Fun Internals](/documentation/internals/){:class="git"} -- [Fun Opcodes](/documentation/opcodes/){:class="git"} -- [Basic Rust Opcodes Support](/documentation/rust/){:class="git"} +- [Fun Internals](https://fun-lang.xyz/documentation/internals/) +- [Fun Opcodes](https://fun-lang.xyz/documentation/opcodes/) +- [Basic Rust Opcodes Support](https://fun-lang.xyz/documentation/rust/) ### The Road Ahead -Documentation is a work in progress as we continue debugging, fixing bugs, and evolving the language. Complete API documentation will follow in future releases. Version 0.37.62 represents substantial progress, but remember: this is an experiment, and stability won't be declared until we reach 1.0. +Documentation is a work in progress as we continue debugging, fixing bugs, and evolving the language. Complete API documentation will follow in future releases. Version 0.37.62 represents substantial progress, but remember, this is an experiment, and stability won't be declared until we reach 1.0. -Fun may not change the world, but it aims to make programming a little more fun. We're on a journey, and we'd love to have you along for the ride — bugs and all. +Fun may not change the world, but it aims to make programming a little more fun. We're on a journey, and we'd love to have you along for the ride - bugs and all. Fun is and will always be 100% free under the terms of the [Apache-2.0 License](https://opensource.org/license/apache-2-0){:class="ext"}. diff --git a/web/_posts/2026-04-10-website-relocation.md b/web/_posts/2026-04-10-website-relocation.md index 5f75692..5397e88 100644 --- a/web/_posts/2026-04-10-website-relocation.md +++ b/web/_posts/2026-04-10-website-relocation.md @@ -18,7 +18,7 @@ tags: - jekyll --- -We've recently completed a significant change to our project structure: the source code for the [fun-lang.xyz](https://fun-lang.xyz){:class="ext"} website has been moved directly into the root of the main Fun project repository. +We've recently completed a significant change to our project structure: the source code for the [fun-lang.xyz](https://fun-lang.xyz) website has been moved directly into the root of the main Fun project repository. ### Why the Move? @@ -34,11 +34,11 @@ Having everything in one place simplifies our development workflow: You can now find the website source in the `./web/` directory of the repository. It continues to use the [Jekyll](https://jekyllrb.com/){:class="ext"} static site generator. -For those interested in the technical details or looking to contribute to the website, we have added a new documentation file: [/web/documentation/website/](../documentation/website/){:class="git"}. This document covers the technology stack, the directory structure, and the available `Makefile` targets for local development and deployment. +For those interested in the technical details or looking to contribute to the website, we have added a new documentation file: [/documentation/website/](https://fun-lang.xyz/documentation/website/). This document covers the technology stack, the directory structure, and the available `Makefile` targets for local development and deployment. ### What changes for you? -For most users, nothing changes! The website remains available at [https://fun-lang.xyz](https://fun-lang.xyz){:class="ext"}. If you are a contributor or following the project closely, you'll just need to look into the `./web/` directory instead of a separate repository. +For most users, nothing changes! The website remains available at [https://fun-lang.xyz](https://fun-lang.xyz). If you are a contributor or following the project closely, you'll just need to look into the `./web/` directory instead of a separate repository. Happy hacking! diff --git a/web/_posts/2026-04-17-announcing-fun-0.40.5.md b/web/_posts/2026-04-17-announcing-fun-0.40.5.md index f2c7879..77b706e 100644 --- a/web/_posts/2026-04-17-announcing-fun-0.40.5.md +++ b/web/_posts/2026-04-17-announcing-fun-0.40.5.md @@ -85,7 +85,7 @@ The Fun VM is now more flexible than ever. Key parameters like `MAX_FRAMES`, `ST 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/). +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](https://fun-lang.xyz/documentation/). Happy hacking, and remember: Fun is Fun! diff --git a/web/_posts/2026-05-01-announcing-api-documentation.md b/web/_posts/2026-05-01-announcing-api-documentation.md index f9803e3..7fa7975 100644 --- a/web/_posts/2026-05-01-announcing-api-documentation.md +++ b/web/_posts/2026-05-01-announcing-api-documentation.md @@ -8,7 +8,7 @@ noToc: false title: Announcing the Fun API Documentation description: A new API documentation hub is now available at fun-lang.xyz/api to explore the Fun VM internals and get contributors started faster. date: 2026-05-01 -date_updated: 2026-05-06 +date_updated: 2026-05-11 categories: - news - docs @@ -41,7 +41,7 @@ This is actually a work in progress, and we are continuously improving and expan - New contributors looking for a starting point. - Power users exploring advanced capabilities of the Fun VM. -- Researchers and curious minds wanting to understand implementation details. +- Researchers and curious minds who want to understand implementation details. ### How to get involved @@ -50,10 +50,8 @@ This is actually a work in progress, and we are continuously improving and expan - Join the discussion: [https://fun-lang.xyz/community/](https://fun-lang.xyz/community/). - Reach out directly: [hanez@fun-lang.xyz](mailto:hanez@fun-lang.xyz){:class="mail"}. -This is just the beginning — we will keep iterating on structure, coverage, and examples. If you notice gaps or have suggestions, please let us know. +This is just the beginning - we will keep iterating on structure, coverage, and examples. If you notice gaps or have suggestions, please let us know. Happy hacking! -Johannes Findeisen (hanez) — [hanez@fun-lang.xyz](mailto:hanez@fun-lang.xyz){:class="mail"} - -UPDATE: The api documentation moved to [https://api.fun-lang.xyz/](https://api.fun-lang.xyz/){:class="ext"}. +Johannes Findeisen (hanez) - [hanez@fun-lang.xyz](mailto:hanez@fun-lang.xyz){:class="mail"} diff --git a/web/_posts/2026-05-10-what-is-fun.md b/web/_posts/2026-05-10-what-is-fun.md index 585da38..a2df002 100644 --- a/web/_posts/2026-05-10-what-is-fun.md +++ b/web/_posts/2026-05-10-what-is-fun.md @@ -8,6 +8,7 @@ noToc: false title: What is Fun? description: Fun is a serious, focused programming language and VM aimed at professional environments — used for serial and smartcard communication and, potentially, TCP/Unix sockets. date: 2026-05-10 +date_updated: 2026-05-11 categories: - project - language @@ -21,11 +22,12 @@ tags: - vm --- -Fun is a programming language and virtual machine I originally started for fun — but I take it seriously and build it for professional environments. It is not an esoteric language. The current focus areas are: +Fun is a programming language and virtual machine I originally started for fun - but I take it seriously and build it for professional environments. It is not an esoteric language. The current focus areas are: +- Potential TCP/Unix socket communication +- CGI and web server support - Serial communication - Smartcard communication -- Potential TCP/Unix socket communication This post gives you a concise picture of what Fun is (and is not), why it exists, and where it is going. @@ -38,14 +40,15 @@ This post gives you a concise picture of what Fun is (and is not), why it exists ### What Fun is not -- Not an esoteric toy — while the project began “for fun,” it has serious goals and standards -- Not a kitchen-sink runtime — we prefer a focused, composable core over bloat +- Not an esoteric toy - while the project began "for fun", it has serious goals and standards +- Not a kitchen-sink runtime - we prefer a focused, composable core over bloat ### Primary use cases (today and near-term) +- Fast prototyping of small, low-level tools +- Explorations around TCP and Unix domain sockets for simple networked services - Talking to devices over serial interfaces (industrial/embedded scenarios) - Smartcard interactions where exact byte-level control is required -- Explorations around TCP and Unix domain sockets for simple networked services ### Design values @@ -60,11 +63,13 @@ Fun is evolving quickly. Some components are production-ready, others are still ### Get involved -- [Browse features](/features/) -- [Read the documentation](/documentation/) +- [Browse features](https://fun-lang.xyz/features/) +- [Read the documentation](https://fun-lang.xyz/documentation/) - Try examples from the repository and site -- Send feedback and ideas — they directly shape priorities +- Send feedback and ideas - they directly shape priorities -If you work with serial devices, smartcards, or lightweight networked tools and want a focused, no-nonsense environment, Fun might fit you well. It started as a project for fun — and it stays fun — but the goals are serious. +If you work with serial devices, smartcards, or lightweight networked tools and want a focused, no-nonsense environment, Fun might fit you well. It started as a project for fun - and it stays fun - but the goals are serious. -— Johannes Findeisen (hanez) · hanez@fun-lang.xyz +Happy hacking! + +Johannes Findeisen (hanez) - hanez@fun-lang.xyz diff --git a/web/about/about.md b/web/about/about.md index b6de07f..9ca2440 100644 --- a/web/about/about.md +++ b/web/about/about.md @@ -3,6 +3,7 @@ layout: page title: About subtitle: More information about having fun... :) description: About +_date: 2023-09-20 metasub: news noToc: true noDate: false diff --git a/web/index.md b/web/index.md index 6ce918a..578b342 100644 --- a/web/index.md +++ b/web/index.md @@ -36,8 +36,7 @@ permalink: / {% for post in site.tags.pinned %}

{{ post.title }} 📌

- + {{ post.content | truncatewords: site.truncatewords_length }}

[Read post]

@@ -47,8 +46,7 @@ permalink: / {% unless post.tags contains 'pinned' %}

{{ post.title }}

- + {{ post.content | truncatewords: site.truncatewords_length }}

[Read post]