#Roto

Terts Diepraamterts@mastodon.online
2026-03-02

We just migrated Roto to @Codeberg!

You can find the new repo here: codeberg.org/NLnetLabs/roto

And read the announcement here: community.nlnetlabs.nl/t/roto-.

We'll migrate more projects soon!

cc @nlnetlabs

#rust #rustlang #roto

Terts Diepraamterts@mastodon.online
2026-02-19

RE: social.tchncs.de/@partim/11609

We need to pick a behaviour for Roto! Help us out with your opinions!

cc @nlnetlabs

#roto #rust #rustlang

Theo UrbachUrbi
2026-02-15
Terts Diepraamterts@mastodon.online
2026-02-03

You can now learn how Roto's integration with Rust works under the hood from the comfort of your own home (instead of a very crowded campus), because my FOSDEM talk has been published!

Props to the @fosdem team for publishing the videos so quickly! It's very impressive!

fosdem.org/2026/schedule/event

#rust #rustlang #roto #fosdem #fosdem2026

Lord Doctor Olle Wollej@hachyderm.io
2026-02-01

It’s time for a talk about Calling JIT compiled scripts in Rust about the Roto scripting language.

#fosdem #Rust #RustLang #roto

Photo of the stage showing a screen with the title Calling JIT compiled scripts
float magazinfloatmagazin
2026-01-15

2026 verjüngt sich die Traditions-Klasse der Sloepen. Gleichzeitig kommen robuste offene Boote aus Polyethylen auf den Markt. Was sie eint, ist ihre einfache Nutzung.

floatmagazin.de/boote/premiere

Float
Terts Diepraamterts@mastodon.online
2026-01-14

We tagged version 0.10.0 of Roto!

For those who are unfamiliar: Roto is a statically-typed, compiled, embedded scripting language for Rust by @nlnetlabs.

You can view the full release notes on our forum: community.nlnetlabs.nl/t/relea.

I'll summarize the most important features in a thread!

1/8

#rust #rustlang #roto

Terts Diepraamterts@mastodon.online
2026-01-12

RE: infosec.exchange/@joshbressers

Roto mentioned! And it's a good podcast episode on top of that!

#roto @nlnetlabs

Theo UrbachUrbi
2025-12-31

galerie.urbach.nl/roto-devente Aanvullingen gedaan met foto's van mijn analoge Hasselblad

AraInfo | Diario Libre d'Aragónarainfo.org@web.brid.gy
2025-12-23

Barra libre para Forcén en el Parque Grande

fed.brid.gy/r/https://arainfo.

Terts Diepraamterts@mastodon.online
2025-12-01

The next version of @nlnetlabs 's scripting language Roto (to be released sometime in December) will include a much-requested feature: lists! Below is a small example of lists in action, showcasing how easy it is to pass them to and from a Roto script. It will print `Result: [0, 1, 2, 3, 4, 5]`.

I'd like to take a moment to explain why lists were so hard to include in Roto in a thread!

1/6

#rust #rustlang #roto

Black Metal Stu🇺🇦🇮🇱HailSatan@metalhead.club
2025-11-30

play.google.com/store/apps/det

Falls ihr eine #Smartwatch auf #WearOS nutzt und Bock auf ein wirklich total außergewöhnliches #Zifferblatt / #Watchface habt: #Roto von #Amoledwatchfaces ist aktuell umsonst zu haben. Die Minuten und Sekunden auf der Einen und die Komplikation auf der anderen Seite drehen sich im Verlauf einer Stunde einmal komplett außen im Kreis. Mir persönlich hat noch kein anderes Zifferblatt so gut gefallen.

Jan :rust: :ferris:janriemer@floss.social
2025-11-10

roto - The strongly-typed, compiled #embedded scripting language for #Rust, used by Rotonda

Introducing #Roto: A Compiled Scripting Language for Rust (May 2025):
blog.nlnetlabs.nl/introducing-

Repo:
github.com/NLnetLabs/roto

This looks awesome! I love strongly typed scripting languages! :awesome:

And the fact that it integrates with Rust so seamlessly... ✨

#RustLang #ProgrammingLanguage #Scripting #ScriptingLanguage

Terts Diepraamterts@mastodon.online
2025-10-16

I collaborated with Conrad Irwin at EuroRust to make a Zed extension for Roto! This is based on the tree-sitter grammar and supports syntax highlighting and generating an outline of your code. It can be installed via Zed's regular extension manager.

cc @nlnetlabs

#rust #rustlang #roto #opensource

The Zed editor with a syntax highlighted Roto file opened upZed's extension panel showing the Roto extension.
Terts Diepraamterts@mastodon.online
2025-10-01

Planning a live demo with bevy-powered visuals for my #eurorust talk and it's starting to take shape. I might be procrastinating making an outline, but hey, it looks cool!

cc @nlnetlabs

#rust #rustlang #roto

On the left: a window showing spiral shape going from red in the center to teal near the edges. The FPS counter says 59.48.

On the right: the Roto code generating this shape by emitting particles and updating them.
dodrio0505 at KillBaitdodrio0505@killbait.com
2025-09-29

España bloquea el paso de armamento estadounidense hacia Israel por las bases de Rota y Morón

España ha decidido vetar el tránsito de aviones y buques estadounidenses cargados con armamento y equipos militares destinados a Israel a través de sus bases de Rota (Cádiz) y Morón de la Frontera (Sevilla). Esta medida se aplica tanto a los vuelos que se dirigen directamente a Israel como a aquello... [Ver más]

Terts Diepraamterts@mastodon.online
2025-09-22

I'm toying with some new ideas for registering functions in Roto and it's starting to look quite nice! Here's a before and after screenshot. The advantages are:

1. You no longer need to pass the runtime around everywhere. You can create the module structure separately and pass it to the runtime as a single unit.
2. You can write doc comments as doc comments instead of strings.
3. There's no proc macro anymore (the new `item!` macro is declarative).

@nlnetlabs

#roto #rustlang #rust

rt.register_clone_type_with_name::<Arc<str>>(
    "String",
    "The string type",
)
.unwrap();

/// Convert this value into a `String`
#[roto_method(rt, Arc<str>, to_string)]
fn to_string(x: Arc<str>) -> Arc<str> {
    x
}let mut string_ty = item! {
    /// The string type
    clone type String = Arc<str>;
};

string_ty.add(item! {
    /// Convert this value into a `String`
    fn to_string(x: Arc<str>) -> Arc<str> {
        x
    }
});
2025-09-03

Another reason the previous ASN->string->AhoCorasick thing doesn't quite work is because the pattern matching is a partial match. Thankfully, there's a StringList type I export to #roto, with a .contents() method, so:

let asn = ASN
  .as_asn_matcher()?
  .lookup(request.header("x-forwarded-for"))
  .to_string();
if BANNED_ASNS.contains(asn) {
  return garbage("banned-asn");
}

...this will work correctly, though, it will be slower than an AhoCorasick match if the list is longer than about a dozen ASNs. And the string conversion is comparatively expensive.

#iocaine

Client Info

Server: https://mastodon.social
Version: 2025.07
Repository: https://github.com/cyevgeniy/lmst