1
0
Fork 0
forked from fun/fun
The programming language that makes you have fun!
  • C 75.3%
  • Standard ML 13.8%
  • CMake 3.1%
  • SCSS 1.9%
  • JavaScript 1.5%
  • Other 4.4%
Find a file
2026-05-07 22:23:01 +02:00
.github/workflows Updated GitHub CI workflow for Doxygen. No code changes. (0.41.5) 2026-04-28 06:30:26 +02:00
api Added Doxigen configuration file Doxyfile to project root. No code changes. (0.41.5) 2026-05-07 00:31:46 +02:00
cmake Some cleanups. Added download page to ./web/. No code changes. (0.40.5) 2026-04-19 00:38:06 +02:00
examples Refactored the PCRE2 extension plus adding some regex examples using this extension. (0.41.7) 2026-05-07 21:54:05 +02:00
lib Refactored the PCRE2 extension plus adding some regex examples using this extension. (0.41.7) 2026-05-07 21:54:05 +02:00
man Added manpages for fun and funstx and some small code changes. (0.39.3) 2026-03-19 23:39:21 +01:00
scripts More fun with scripts/play.fun. No core code logic changes. (0.41.5) 2026-04-27 04:25:14 +02:00
spec Added spec version 0.4 and added a changelog that will cover all changes more detailed in the future. No code changes. (0.40.5) 2026-04-10 21:53:50 +02:00
src Fixed bug in the PCSC extension and added more Doxygen documentation to all extensions. (0.41.8) 2026-05-07 22:23:01 +02:00
tmp Added .gitkeep to ./tmp/ to ensure this directory is in the project tree. No code changes. (0.40.6) 2026-04-21 01:08:44 +02:00
web Fixed bug in the PCSC extension and added more Doxygen documentation to all extensions. (0.41.8) 2026-05-07 22:23:01 +02:00
.clang-format Added .clang-format and .clang-tidy. No code changes. (0.41.5) 2026-05-01 22:32:55 +02:00
.clang-tidy Added .clang-format and .clang-tidy. No code changes. (0.41.5) 2026-05-01 22:32:55 +02:00
.editorconfig Added first GitHub action for evaluation. No code changes. (0.39.15) 2026-03-31 00:58:11 +02:00
.gitignore Some refactoring and VM code cleanups. (0.41.6) 2026-05-07 18:39:36 +02:00
CHANGELOG.md Added spec version 0.4 and added a changelog that will cover all changes more detailed in the future. No code changes. (0.40.5) 2026-04-10 21:53:50 +02:00
CMakeLists.txt Fixed bug in the PCSC extension and added more Doxygen documentation to all extensions. (0.41.8) 2026-05-07 22:23:01 +02:00
CODE_OF_CONDUCT.md Reverted some stupid file renames. No code changes. (0.36.0) 2025-12-09 23:28:28 +01:00
Doxyfile Refactored the PCRE2 extension plus adding some regex examples using this extension. (0.41.7) 2026-05-07 21:54:05 +02:00
LICENSE License fix. (0.15.3) 2025-09-30 23:42:40 +02:00
make Removed sudo from ./make install as a dependency. (0.41.5) 2026-04-27 09:12:18 +02:00
README.md Renamed ./examples/external to ./examples/extensions. No code changes. (0.40.6) 2026-04-27 01:20:38 +02:00
SEMANTIC_VERSIONING.md Reverted some stupid file renames. No code changes. (0.36.0) 2025-12-09 23:28:28 +01:00

Fun (https://fun-lang.xyz)

What is Fun?

Fun is a small, strict, and simple programming language that runs on a compact stack-based virtual machine. The C core is intentionally minimal; most functionality and standard libraries are implemented in Fun itself. The language emphasizes simplicity, consistency, and joy in coding.

Fun is an experiment, just for fun, but Fun works!

Fun is a highly strict programming language, but also highly simple. It looks like Python (My favorite language), but there are differences.

Influenced by Bash, C, Lua, PHP, Python, and Rust (Most influences came from linked languages).

Fun is and will ever be 100% free under the terms of the Apache-2.0 License.

Idea

  • Simplicity
  • Consistency
  • Simple to extend
  • Hackable
  • Joy in coding
  • Fun!

Characteristics

  • Dynamic and optionally statically typed
  • Type safety
  • Written in C (C99) and Fun
  • Internal libs are written with no_camel_case even when written in Fun, except class names
  • Only a minimal function set is written in C, and most other core functions and libraries are implemented in Fun

The Fun Manifesto

Fun is a programming language built on a simple idea: Coding should be enjoyable, elegant, and consistent.

Philosophy

  • Fun is Fun
    Programming should spark creativity, not frustration. Code in Fun feels light, playful, and rewarding.
  • Fun Uses Nothing
    Minimalism is power. No unnecessary features, no endless syntax variations, no formatting debates. Just clean, uniform code.
  • Indentation is Truth
    Two spaces, always. No tabs, no four-space wars. Code should look the same everywhere, from your laptop to /usr/bin/fun.
  • One Way to Do It
    No clutter, no 15 ways of writing the same thing. Simplicity means clarity.
  • Hackable by Nature
    Fun should be small and embeddable, like Lua. Easy to understand, extend, and tinker with — true to the hacker spirit.
  • Beautiful Defaults
    A language that doesnt need linters, formatters, or style guides. Beauty is built in.

The Community

Fun is not about being the fastest or the most feature-rich. Its about sharing joy in coding. The community should be:

  • Respectful
  • Curious
  • Creative
  • Open for everyone

Like the name says: Fun Unites Nerds.

Please visit the Fun Community Page to get in touch.

The Goal

A language that feels like home for developers who:

  • Love minimal, elegant tools
  • Believe consistency is freedom
  • Want to write code that looks good and feels good

Fun may not change the world — but it will make programming a little more fun.

Features

Core

  • functions/classes/objects
  • if/else if/else
  • try/catch/finally

And much more...! Look at the specs in Spec for more detailed information.

Lib (./lib/)

See ./lib/ for what the standard library provides.

Optional extensions (build-time selectable / only testing this on Linux actually):

☑ = Done (or basics implemented) / ☐ = Planned or in progress.

Note: Not all of the above features will be implemented. Those who are marked "Done" will probaly remain in Fun, but I don't know actually... ;)

There are some libs written in Fun available in the ./lib/ diretory. In the future most Fun enhancements should be written in Fun itself.

OpenSSL quickstart (MD5)

See the dedicated page: ./web/documentation/extensions/openssl/

Documentation

Looking for docs? Start here:

Additional references:

Note: The project is evolving; some documents may lag behind. The docs index in ./web/documentation/documenatation.md is the most uptodate entry point.

Author

Johannes Findeisen - you@hanez.org