Skip to content
Draft

Standard Library

Draft ships with a comprehensive standard library organized into focused modules.

Module Description
io Console I/O and stream operations
fs File system operations
math Mathematical functions and constants
strings String manipulation utilities
collections Data structures and algorithms
json JSON encoding and decoding
http HTTP client and server
time Date, time, and duration
process Process management and environment

Import specific items:

import { write, read_line } from io
import { read_file, write_file } from fs

Import entire module:

import io
import fs
import math

Input and output operations including console I/O, streams, and buffered reading.

import io
action main()
@io#write("Enter your name: ")
@name = @io#read_line()
@io#write("Hello, " + @name)
fin action.

File system operations for reading, writing, and manipulating files and directories.

import fs
action main()
@content = @fs#read_file("config.toml")
@fs#write_file("output.txt", @content)
fin action.

Mathematical functions, constants, and random number generation.

import math
action main()
@pi = @math#PI
@sqrt = @math#sqrt(144) @// 12.0
@random = @math#random(1, 100)
fin action.

Advanced string manipulation beyond built-in string methods.

import strings
action main()
@result = @strings#trim(" hello ")
@split = @strings#split("a,b,c", ",")
fin action.

Advanced data structures like linked lists, queues, and trees.

import collections
action main()
@queue = @collections#Queue<Int>::new()
@queue#push(1)
@queue#push(2)
@value = @queue#pop()
fin action.

Parse and generate JSON data.

import json
action main()
@data = @json#parse('{"name": "Alice", "age": 30}')
@json_string = @json#stringify(@data)
fin action.

Build HTTP servers and make HTTP requests.

import http
action main()
@server = @http#Server::new()
@server#get("/", fn(@req) => "Hello, World!")
@server#listen(8080)
fin action.

Work with dates, times, durations, and intervals.

import time
action main()
@now = @time#now()
@formatted = @time#format(@now, "YYYY-MM-DD")
@time#sleep(seconds(1))
fin action.

Access environment variables, command-line arguments, and manage processes.

import process
action main()
@args = @process#args()
@env = @process#env("HOME")
@process#exit(0)
fin action.

Explore each module in detail by clicking the links above.