Standard Library
Draft ships with a comprehensive standard library organized into focused modules.
Available Modules
Section titled “Available 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 |
Importing Modules
Section titled “Importing Modules”Import specific items:
import { write, read_line } from ioimport { read_file, write_file } from fsImport entire module:
import ioimport fsimport mathModule Overview
Section titled “Module Overview”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.strings
Section titled “strings”Advanced string manipulation beyond built-in string methods.
import strings
action main() @result = @strings#trim(" hello ") @split = @strings#split("a,b,c", ",")fin action.collections
Section titled “collections”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.process
Section titled “process”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.Next Steps
Section titled “Next Steps”Explore each module in detail by clicking the links above.
