Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
A

Ark

> 编程语言
Open source

ArkScript is a small, fast, functional and scripting language for C++ projects

721 stars0 likes0 views
WebsiteGitHub

About

ArkScript is a small, fast, functional and scripting language for C++ projects

ArkScript

  • Documentation
  • Playground, try the language online now!
  • ️ Discussions: to receive help with the language, discuss new features and ideas

Note: the project is referred as "Ark" and as "ArkScript". The official public name is "ArkScript" since "Ark" is already being used by another language

Key features

ArkScript is

  • small: the core fit under 8000 lines of code ; also small in terms of keywords (only 9)
  • a scripting language: very easy to embed it in your projects. Registering your own functions in the language is made easy
  • portable: a unique bytecode which can be run everywhere the virtual machine is
  • a functional language: every parameter is passed by value, everything is immutable unless specified
  • expressive: has only 8 types to represent any data you might need, provides closures with explicit capture
  • promoting functionalities before performances: expressiveness often brings more productivity
  • decent performance wise: even if performances aren't priority #1, ArkScript has an optimising compiler and decent performances
  • a Lisp inspired language: your code is data and can be easily manipulated via macros
  • extensible: supports C++ module to use it in the language, adding functionalities

Also, it has:

  • a REPL with autocompletion and coloration
  • a built-in opinionated non-configurable code formatter
  • a functional standard library, composed of ArkScript code (under lib/std/) and C++ (under lib/modules/)
  • docker images:
    • stable, built after each release
    • nightly, built after each commit

Examples

Fibonacci suite

…

bash

first, clone it

git clone --depth=50 --branch=dev https://github.com/ArkScript-lang/Ark.git cd Ark git submodule update --init --recursive

building Ark

cmake . -Bbuild -DCMAKE_BUILD_TYPE=Release -DARK_BUILD_EXE=On cmake --build build --config Release

installing Ark (might need administrative privileges)

cmake --install build --config Release


Desired output of `arkscript --help`:

DESCRIPTION ArkScript programming language

SYNOPSIS arkscript -h arkscript -v arkscript --dev-info arkscript -e
arkscript [-d] [-L ] [-f(importsolver|no-importsolver)] [-f(macroprocessor|no-macroprocessor)] [-f(optimizer|no-optimizer)] [-f(irinliner|no-irinliner)] [-f(iroptimizer|no-iroptimizer)] [-fdebugger] [-fdump-ir] [-fno-cache] -c [--stats]

    arkscript [-d] [-L ] [-f(importsolver|no-importsolver)]
              [-f(macroprocessor|no-macroprocessor)] [-f(optimizer|no-optimizer)]
              [-f(irinliner|no-irinliner)] [-f(iroptimizer|no-iroptimizer)] [-fdebugger]
              [-fdump-ir] [-fno-cache]  

    arkscript -f  [--(dry-run|check)] 
    arkscript [-d] [-L ] --ast  
    arkscript -bcr  -on 
    arkscript -bcr  -a [-s  ] 
    arkscript -bcr  -st [-s  ] 
    arkscript -bcr  -vt [-s  ] 
    arkscript -bcr  [-cs] [-p ] [-s  ] 

OPTIONS -h, --help Display this message -v, --version Display ArkScript version and exit --dev-info Display development information and exit -e, --eval Evaluate ArkScript expression -d, --debug... Increase debug level (default: 0)

    -L, --lib                   Set the location of the ArkScript standard library. Paths can be
                                delimited by ';'

    -f(importsolver|no-importsolver)
                                Toggle on and off the import solver pass

    -f(macroprocessor|no-macroprocessor)
                                Toggle on and off the macro processor pass

    -f(optimizer|no-optimizer)  Toggle on and off the optimizer pass
    -f(irinliner|no-irinliner)  Toggle on and off the IR inliner pass
    -f(iroptimizer|no-iroptimizer)
                                Toggle on and off the IR optimizer pass

    -fdebugger                  Turn on the debugger
    -fdump-ir                   Dump IR to file.ark.ir
    -fno-cache                  Disable the bytecode cache creation
    -c, --compile               Compile the given program to bytecode, but do not run
                          If file is -, it reads code from stdin
    --stats                     Gather stats about each compiler pass and print them to stdout
    -f, --format                Format the given source file in place
    --dry-run                   Do not modify the file, only print out the changes
    --check                     Check if a file formating is correctly, without modifying it.
                                Return 1 if formating is needed, 0 otherwise

    -d, --debug...              Increase debug level (default: 0)

    -L, --lib                   Set the location of the ArkScript standard library. Paths can be
                                delimited by ';'

    --ast                       Compile the given program and output its AST as JSON to stdout
    -bcr, --bytecode-reader     Launch the bytecode reader
                          .arkc bytecode file or .ark source file that will be compiled
                                first

    -on, --only-names           Display only the bytecode segments names and sizes
    -a, --all                   Display all the bytecode segments (default)
    -st, --symbols              Display only the symbols table
    -vt, --values               Display only the values table
    -cs, --code                 Display only the code segments
    -p, --page                  Set the bytecode reader code segment to display
    -s, --slice                 Select a slice of instructions in the bytecode

VERSION 4.7.2-28c5a9e6

BUILD DATE 2026-09-04T18:22:01Z

LICENSE Mozilla Public License 2.0


### In your own project

Please refer to the [embedding ArkScript](https://arkscript-lang.dev/docs/tutorials/embedding/) tutorial.

## Performances

See https://arkscript-lang.dev/tools/benchmarks/

## The sponsors

Huge thanks to those people for their donations to support the project:

* TheCountVEVO
* [llexto](https://github.com/llexto)
* COUR Eloïse
* [AKPINAR Dylan](https://github.com/DylanAkp)
* [Ryan C. Gordon](https://icculus.org) through his [2022 Microgrant](https://web.archive.org/web/20220608150846/https://twitter.com/icculus/status/1534552918317318144)

## Credits

This project was inspired by [game programing patterns](http://gameprogrammingpatterns.com/bytecode.html) and [anthay/Lisp90](https://github.com/anthay/Lisp90)

## Copyright and Licence information

Copyright © 2019-2026 Lexy Plateau. All rights reserved.

### Using ArkScript in your company

I (Lexy Plateau) am working pretty much alone on this project, and I try to do my best to leave it as bug free and as performant as possible. However, this is a side project for which I'm currently **not paid** to work on, thus I can't fix every bug or address every feature request in a timely manner.

Please reach out either by email ([email protected]) or via a [discussion](https://github.com/orgs/ArkScript-lang/discussions) before using the language in a company project, so that we can set up a support contract. If you don't want to set up a contract, your issues and support requests won't be prioritised (and possibly left unanswered).

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

C++arkarkscriptcompilercpp

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言