What is Fun?

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 a little 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 doesn’t need linters, formatters, or style guides. Beauty is built in.

The Community

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

  • Respectful
  • Curious
  • Creative

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…

Lib

See https://git.xw3.org/fun/fun/src/branch/main/lib for what the standard library provides.

Extensions (only Linux actually)

  • CGI support builtin using kcgi (optional)
  • cURL support builtin using libcurl (optional)
  • INI support builtin using iniparser (optional)
  • JSON support builtin using json-c (optional)
  • libSQL support builtin as a compatible alternative to SQLite (optional)
  • PCRE2 support builtin for Perl-Compatible Regular Expressions (optional)
  • PCSC smart card support builtin using PCSC lite (optional)
  • SQLite support builtin (optional)
  • Tk support builtin for GUI application development (optional)
  • XML support builtin using libxml2 (optional)

= Done / = Planned or in progress.

Note: Not all of the above features will be implemented. Those who are marked “Done” will probably 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.

Code