cd /news/developer-tools/tinys-python-shaped-syntax-with-rust… · home topics developer-tools article
[ARTICLE · art-67823] src=github.com ↗ pub= topic=developer-tools verified=true sentiment=· neutral

TinyS – Python-shaped syntax with Rust semantics

TinyS is a new programming language that offers Python-shaped syntax with Rust semantics, transpiling to Rust and compiling to native binaries without a garbage collector or runtime. The language, detailed in a GitHub repository, supports ownership, borrowing, lifetimes, traits, and Result-based errors from Rust, while providing Python-like indentation-based syntax and immutable-by-default variables.

read2 min views2 publishedJul 22, 2026
TinyS – Python-shaped syntax with Rust semantics
Image: source

If you are an AI developer wanting to learn rust, you can take all your python knowledge and put it into TinyS ;-)

Python-shaped syntax, Rust semantics, native binaries.

You write indentation-based .sn

source; it transpiles to Rust and compiles to a native binary. No GC, no runtime — ownership, borrowing, lifetimes, traits, and Result

-based errors all carry over from Rust unchanged.

.sn source  →  generated .rs  →  rustc / Cargo  →  native binary

Python's look, not Python's guarantees: conditions must be bool

, matches are exhaustive, no implicit truthiness, no implicit conversion, no null

.

TinyS Rust
def f(x: i32) -> i32:
fn f(x: i32) -> i32 {}
list[i32] / dict[str,i32]
Vec<i32> / HashMap<…>
ref T / mut ref T
&T / &mut T
at value
*value
.a , .source
'a , 'source
Result[User, Error]
Result<User, Error>
match / case
match arms
and / or / not
&& / `
str / ref str
String / &str
from rust.regex import …
use regex::…
from rust.serde import Serialize, Deserialize

#[derive(Debug, Clone, Serialize, Deserialize)]
struct User:
    id: u64
    name: str

impl User:

    def greeting(self: ref Self) -> str:
        return format("Hello, {}", self.name)

def main() -> void:
    user = User(id=1, name="Ada")
    print(user.greeting())

Immutable by defaultcount = 0

, opt into mutation withmut total = 0

.Borrowing is a keywordref

/mut ref

instead of&

/&mut

; dereference withat

;move

for explicit ownership transfer.ErrorsResult

/Option

,?

propagation,none

for absence. No exceptions.Pattern matching— exhaustive, an expression;_

wildcard,|

alternatives,if

guards,as

binds the whole value.Control flow is expression-orientedif

,match

, andloop

produce values.Asyncasync def

with postfix.await

.Rust interop is always visible— crates come through therust

root (from rust.serde import …

); macros are imported and called without!

.Packagingtinys.toml

maps onto Cargo; modules follow the file layout.

Full design drafts live in doc/draft/; see the README for the complete tour.

── more in #developer-tools 4 stories · sorted by recency
── more on @tinys 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/tinys-python-shaped-…] indexed:0 read:2min 2026-07-22 ·