Hymn Script
A tiny scripting language so simple, it's peaceful 🙏
Latest Release 0.11.1
September 22, 2024 · Release notes
Syntax
Hymn syntax uses only a handful of easy to read keywords. Try it online!
# import scripts with the `use` statement.
use "math"
# tables hold key and value pairs
func new-node (value) {
return { value: value, next: none }
}
func node-add (list, value) {
set node = list
while true {
if node.next == none { break }
node = node.next
}
node.next = new-node(value)
}
# objects are passed by reference
set list = new-node("hello" )
node-add(list, "world" )
# echo statements will show all nested values in an object
echo list
Small
Hymn is written in portable C11 code that passes with -Wall -Wextra -Werror -pedantic flags. It uses zero external dependencies. Linux and Windows along with GCC, Clang and MSVC are all supported.
Hymn uses less than 10,000 lines of C code. The JavaScript implementation uses less than 6,000 lines.
Simple
Hymn has no classes, closures, or namespaces. Tables and arrays are the building blocks for all complex algorithms and data structures.
Hymn uses reference counting for memory management. This means scripts keep a smaller footprint, and release memory deterministically.
Hymn natively supports both 64 bit signed integers, and 64 bit floats. They are stored as distinct types.
Open Source
Hymn is licensed under the Mozilla Public License Version 2.0. The source code is free to view, distribute, and modify.
Releases
Hymn · 0.11.1 | September 22, 2024 |
Hymn · 0.11.0 | September 21, 2024 |
Hymn · 0.10.1 | June 15, 2023 |
Hymn · 0.10.0 | May 29, 2023 |
Hymn · 0.9.0 | May 7, 2023 |
Hymn · 0.8.0 | February 19, 2023 |
Hymn · 0.7.0 | February 5, 2023 |
Hymn · 0.6.2 | May 7, 2022 |
Hymn · 0.5.1 | May 1, 2022 |
Hymn · 0.4.0 | January 23, 2022 |
Hymn · 0.3.0 | January 10, 2022 |
Hymn · 0.1.0 | October 18, 2021 |