Documentation channel: current development main at compiler checkpoint 1d7e15e. The latest tagged release is v0.0.3; pages identify APIs that are not yet released.

Networking

Strut's networking substrate keeps the core small: TCP connect, listen, accept, reads, writes, explicit close, and executor-backed async connect/accept. Higher-level HTTP client/server, TLS, and WebSocket facilities are independently selected runtime components; application protocols and policy remain package or application concerns.

TCP client

function main() -> int : NetworkError {
    socket := tcp_connect("example.com", 80);
    socket.write("GET / HTTP/1.0\r\n\r\n");
    response := socket.read(4096);
    print(response);
    socket.close();
    return 0;
}

TCP listener

function main() -> int : NetworkError {
    listener := tcp_listen("127.0.0.1", 8080);
    socket := listener.accept();
    socket.write("hello");
    socket.close();
    listener.close();
    return 0;
}

Async connect and accept

tcp_connect_async and accept_async() use Strut's shared native executor and return futures.