Kodeknuder
Når grafen ikke slår til, kører boksen Code et script.
Syv sprog står til rådighed, og de udføres alle i en indbygget WebAssembly-sandbox: der kræves ingen fortolker på din maskine, og scriptet har ikke adgang til dit filsystem.
| Sprog | Motor |
|---|---|
| TypeScript | QuickJS (typer fjernes ved kompilering) |
| JavaScript | QuickJS |
| Python | Pyodide (CPython kompileret til WebAssembly) |
| Lua | Lua 5.4 i WebAssembly |
| Ruby | CRuby i WebAssembly |
| R | WebR |
| C# | .NET i WebAssembly med Roslyn |
Standardsproget er TypeScript.
Den fælles kontrakt
Section titled “Den fælles kontrakt”Uanset sproget stiller boksen det samme til rådighed:
| Indgange | value (kaldet input), code (streng) |
| Udgange | result |
| Konfiguration | language, code, timeout, packages |
input— den værdi, der er modtaget på indgangsporten.vars— kørselsvariablerne.- Sprogets standardoutput (
console.log,print,puts,cat,Console.WriteLine) fodrer kørselsloggen. - Den returnerede værdi går ud på porten
result. En fejl eller en overskredet frist går ud påerror.
Fristen
Section titled “Fristen”timeout, i sekunder: 5 som standard, 60 højst. Et script, der
overskrider den, afbrydes, og kørslen går ud på porten error.
Eksterne pakker
Section titled “Eksterne pakker”Feltet packages accepterer en liste af { nom, version }. De nøjagtige
versioner fungerer som cachenøgle: afhængighederne opløses ved første kørsel,
lægges i cache og monteres derefter offline ved hver efterfølgende kørsel —
også i CI.
| Sprog | Kilde |
|---|---|
| TypeScript / JavaScript | npm (det hele pakkes ind) |
| Python | Ren Python-wheels fra PyPI |
| Lua | LuaRocks (kilder i ren Lua) |
| Ruby | Rene Ruby-gems |
| R | CRAN, via WebR’s WebAssembly-repositorium |
| C# | Ingen — udelukkende .NET-standardbiblioteket |
Hvornår du ikke skal skrive kode
Section titled “Hvornår du ikke skal skrive kode”Mange behov er allerede dækket af bokse, som både er mere læsbare og hurtigere:
| Behov | Boks |
|---|---|
| Udtrække en værdi fra et svar | En forbindelsesselektor |
| Formatere en streng | Transformér |
| Filtrere, sortere, aggregere en liste | Lister |
| Hashe, kode, signere | Kodning |
| Kontrollere en struktur | Schema validate |
Gem boksen Code til den logik, der virkelig er speciel.