diff --git a/README.md b/README.md index d74d1ec..aa8d26d 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,11 @@ ## 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](https://www.gnu.org/software/bash/)**, **[C](https://en.wikipedia.org/wiki/The_C_Programming_Language)**, Go, **[Lua](https://www.lua.org/)**, **[Python](https://www.python.org/)**, and Rust (Most influences came from linked languages). +Influenced by **[Bash](https://www.gnu.org/software/bash/)**, **[C](https://en.wikipedia.org/wiki/The_C_Programming_Language)**, **[Lua](https://www.lua.org/)**, PHP, **[Python](https://www.python.org/)**, 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](https://opensource.org/license/apache-2-0). @@ -67,25 +69,48 @@ 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 + +### Lib + +... + +### Extensions + +- [CGI](https://en.wikipedia.org/wiki/Common_Gateway_Interface) support builtin using [kcgi](https://kristaps.bsd.lv/kcgi/) (optional) ☐ - [cURL](https://curl.se/) support builtin using [libcurl](https://curl.se/libcurl/) (optional) ☑ +- [INI](https://en.wikipedia.org/wiki/INI_file) support builtin using [iniparser](https://gitlab.com/iniparser/iniparser/) (optional) ☐ - [JSON](https://www.json.org/) support builtin using [json-c](https://github.com/json-c/json-c) (optional) ☑ - [libSQL](https://github.com/tursodatabase/libsql) support builtin (optional) ☑ - [PCRE2](https://pcre2project.github.io/pcre2/) support builtin for Perl-Compatible Regular Expressions (optional) ☑ - [PCSC](https://pcscworkgroup.com/) smart card support builtin using [PCSC lite](https://pcsclite.apdu.fr/) (optional) ☑ - [SQLite](https://sqlite.org/) support builtin (optional) ☑ - [Tk](https://www.tcl-lang.org/) support builtin for GUI application development (optional) ☐ +- [TOML](https://en.wikipedia.org/wiki/TOML) support builtin using [tomlc99](https://github.com/cktan/tomlc99) (optional) ☐ - [XML](https://www.w3.org/XML/) support builtin using [libxml2](https://gitlab.gnome.org/GNOME/libxml2/-/wikis/home) (optional) ☐ - [YAML](https://yaml.org/) support builtin using [libfyaml](https://github.com/pantoniou/libfyaml) (optional) ☐ ☑ = Done / ☐ = 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 at the [./lib/](https://git.xw3.org/fun/fun/src/branch/main/lib) diretory. In the future most Fun enhancements should be written in Fun itself. + ## Documentation -I am writing documentation only actually, but this is work in progress, since debugging and bug fixing includes this task. +This is actually a work in progress... Current documentation is only found in the [Fun Handbook](https://git.xw3.org/fun/fun/src/branch/main/docs/handbook.md). -In the [examples/](https://git.xw3.org/fun/fun/src/branch/main/examples) directory should be an example of most Fun features. +In the [./examples/](https://git.xw3.org/fun/fun/src/branch/main/examples) directory should be an example of most Fun features. + +Fun internals are found directly in the [./src/](https://git.xw3.org/fun/fun/src/branch/main/src) diretory. Fun [Opcodes](https://en.wikipedia.org/wiki/Opcode) are found in [./src/vm/](https://git.xw3.org/fun/fun/src/branch/main/src/vm). + +Since things are actually changing sometimes, I will not write the documentation for this as of now. Complete API documentation will follow. diff --git a/docs/handbook.md b/docs/handbook.md index 2f8ca49..1cedac7 100644 --- a/docs/handbook.md +++ b/docs/handbook.md @@ -1,3 +1,23 @@ +--- +layout: page +published: true +noToc: true +noComments: true +title: /handbook/index.fun +subtitle: +description: Handbook +permalink: /handbook/ +lang: en +tags: +- handbook +- installation +- usage +- introduction +- help +- guide +- howto +--- + # Fun Handbook (Second Edition) This is a refreshed, de-duplicated, and fully up-to-date handbook for the Fun programming language and its virtual machine (VM). It keeps the same section layout as the original handbook while consolidating repeated content and documenting all currently available features, including the latest SQLite support. @@ -88,11 +108,11 @@ FUN_LIB_DIR="$(pwd)/lib" ./build/fun Pass all options as -DNAME=VALUE. The most relevant toggles are: - FUN_DEBUG=ON|OFF — verbose VM debug logging (default OFF) -- FUN_WITH_CURL=ON|OFF — enable CURL support via libcurl (default OFF) -- FUN_WITH_JSON=ON|OFF — enable JSON support via json-c (default OFF) +- FUN_WITH_CURL=ON|OFF — enable CURL (libcurl) support (default OFF) +- FUN_WITH_JSON=ON|OFF — enable JSON (json-c) support (default OFF) - FUN_WITH_LIBSQL=ON|OFF — enable libSQL (Turso) client support (default OFF) - FUN_WITH_PCRE2=ON|OFF — enable PCRE2 (Perl-Compatible Regular Expressions) (default OFF) -- FUN_WITH_PCSC=ON|OFF — enable PC/SC smart card support (default OFF) +- FUN_WITH_PCSC=ON|OFF — enable PC/SC smart card (PCSC lite) support (default OFF) - FUN_WITH_REPL=ON|OFF — enable the interactive REPL (default OFF) - FUN_WITH_SQLITE=ON|OFF — enable SQLite (sqlite3) support (default OFF)