gitwtfhub

wtf is tinys?

ewiger/tinys — explained in plain English

Analysis updated 2026-05-18

2RustAudience · developerComplexity · 3/5Setup · easy

TL;DR

An experimental Python-like language that compiles to Rust, keeping Rust's ownership and safety rules under friendlier syntax.

Mindmap

Mindmap is still cooking. Refresh in a few.

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Write Python-shaped code that compiles down to real, native Rust programs.

REASON 2

Learn how Rust's ownership and borrowing rules work through more explicit, readable keywords.

REASON 3

Run and inspect the example .sn programs bundled in the examples folder.

REASON 4

Study or extend a small working compiler as a way to learn how compilers are built.

What's in the stack?

RustCargo

How it stacks up

ewiger/tinys132ikl/game1lystore/pay-dcp
Stars222
LanguageRustRustRust
Last pushed2020-12-30
MaintenanceDormant
Setup difficultyeasymoderatemoderate
Complexity3/52/53/5
Audiencedevelopergeneraldeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · easy Time to first run · 5min

Install via cargo install tinys, or clone and run cargo build directly.

Wtf does this do

TinyS is an experimental programming language that looks like Python but compiles down to Rust. The idea is to keep Rust's strict guarantees around ownership, borrowing, and type safety, while writing code in a cleaner, more readable syntax closer to Python. A TinyS source file gets translated into generated Rust code, which is then compiled by the normal Rust compiler and Cargo into a native program. So TinyS is not a separate runtime or a Python interpreter, it is a layer that produces real Rust underneath. The project explicitly says it does not try to hide Rust's rules about who owns a value, who is borrowing it, or when it gets moved or cloned. Instead it gives those same rules shorter, more explicit keywords such as ref for a shared reference, mut ref for a mutable one, at for dereferencing, and move or clone to control ownership transfer. A working version 0.1.0 compiler already exists, built from an indentation aware lexer, a parser, and a Rust code generator, all driven by a command line tool called tinys. It already supports functions, structs, enums, pattern matching, traits, generics, closures, and error handling through Result and Option types. You can install it from crates.io with a single cargo install command, or run example programs bundled in the project. The project is explicit about what it is not trying to be: not a garbage collected language, not a wrapper around real Python, not a language with implicit null values, and not a replacement for Cargo or the wider Rust ecosystem. The syntax and behavior are still evolving, and the authors describe TinyS as not yet ready for production use. It is best suited for developers who already know some Rust and want to explore a friendlier syntax on top of it, or who simply want to learn how a small compiler works.

Yoink these prompts

Prompt 1
Walk me through installing the TinyS CLI with cargo install tinys and running the hello world example.
Prompt 2
Explain how TinyS represents Rust references and mutable references using ref and mut ref.
Prompt 3
Show me how to write a struct with an impl block in TinyS syntax.
Prompt 4
Help me understand the difference between TinyS's move and clone keywords.

Frequently asked questions

wtf is tinys?

An experimental Python-like language that compiles to Rust, keeping Rust's ownership and safety rules under friendlier syntax.

What language is tinys written in?

Mainly Rust. The stack also includes Rust, Cargo.

How hard is tinys to set up?

Setup difficulty is rated easy, with roughly 5min to a first successful run.

Who is tinys for?

Mainly developer.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.