Learn Play Download Source Light

Hymn Script

A tiny scripting language so simple, it's peaceful 🙏

LEARN INSTALL TRY ONLINE

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.1September 22, 2024
Hymn · 0.11.0September 21, 2024
Hymn · 0.10.1June 15, 2023
Hymn · 0.10.0May 29, 2023
Hymn · 0.9.0May 7, 2023
Hymn · 0.8.0February 19, 2023
Hymn · 0.7.0February 5, 2023
Hymn · 0.6.2May 7, 2022
Hymn · 0.5.1May 1, 2022
Hymn · 0.4.0January 23, 2022
Hymn · 0.3.0January 10, 2022
Hymn · 0.1.0October 18, 2021