Nyt Javascript-miljø vil slå Node.js og Deno på ydelsen

22. juli 2022 kl. 03:251
Boller
Illustration: Bigstock/Puludi.
Markant bedre ydelse kan gøre nyt Javascript-miljø interessant for udviklere. Bag miljøet ligger Zig, et nyt programmeringssprog.
Artiklen er ældre end 30 dage

Et nyt Javascript-miljø er kommet til verden. Bun, eller bolle på dansk – sådan en af mel og gær – vil slå gamle og nye kendinge som Node.js og Deno på ydelsen.

Og hvis man skal tro projektets egne benchmark, så er man på rette spor. I version 0.10 prales der med at kunne klares knap 49.000 server-renderingsopgaver i React på ét sekund, hvor Node.js ligger på knap 16.300 og Deno på 15.800.

Bag miljøet står Jarred Sumner, der har en fortid som frontend-udvikler i firmaet Stripe. Det er open source under MIT-licensen.

Det er ikke kun ydelsen ved React-rendering, som miljøet kan prale af.

Artiklen fortsætter efter annoncen

»På Linux installerer den afhængigheder til en simpel Next.js-app ca. 20 gange hurtigere end nogen anden npm-klient, der er tilgængelig i dag,« skriver Jarred Sumner på Hacker News.

Bygget til ydelse og edge

Bun blev bygget fra bunden for at fokusere på tre hovedpunkter: Hurtigere opstart, med edge-anvendelse i tankerne. Punkt to er ydelse, som ifølge projektet opnås ved at bruge Apples Javascriptcore-motor, i stedet for den vanlige V8, og endeligt skal Bun være et godt og komplet værktøj, med bundler, transpiler og pakkehåndtering indbygget.

Bun er designet som en såkaldt drop in-erstatning for nuværende Javascript- og Typescript-programmer, på den lokale computer, server eller i edge-verdenen.

Miljøet implementerer på egen hånd hundredvis af Node.js og web-API'er, herunder omkring 90 procent af Nodes api, så som fs, path, Buffer og flere til.

Nyt programmeringssprog bag ydelse

Den specielle ingrediens i Bun er anvendelsen af det nye programmeringssprog Zig, der betegner sig selv som et simpelt sprog med manuel hukommelsesstyring. Et Zig-program kan se sådan ud:

  1. const std = @import("std");
  2. const json = std.json;
  3. const payload =
  4. \\{
  5. \\ "vals": {
  6. \\ "testing": 1,
  7. \\ "production": 42
  8. \\ },
  9. \\ "uptime": 9999
  10. \\}
  11. ;
  12. const Config = struct {
  13. vals: struct { testing: u8, production: u8 },
  14. uptime: u64,
  15. };
  16. const config = x: {
  17. var stream = json.TokenStream.init(payload);
  18. const res = json.parse(Config, &stream, .{});
  19. // Assert no error can occur since we are
  20. // parsing this JSON at comptime!
  21. break :x res catch unreachable;
  22. };
  23. pub fn main() !void {
  24. if (config.vals.production > 50) {
  25. @compileError("only up to 50 supported");
  26. }
  27. std.log.info("up={d}", .{config.uptime});
  28. }

Det meste af Bun er skrevet i Zig, herunder JSX/Typescript-transpiler, npm-klient, bundler, SQLite-klient, HTTP-klient, Websocket-klient og mere til.

Artiklen fortsætter efter annoncen

»Zigs' kontrol på det lave niveau over hukommelsen og mangel på skjult kontrolflow gør det meget nemmere at skrive hurtig software,« skriver projektet på sin hjemmeside.

Analytikere: Værd at overveje som alternativ til Node og Deno

Bun ser ud til at fokusere på opstartshastighed, hvilket gør det til et godt valg til anvendelser i edge, siger Andrew Cornwall, senioranalytiker hos Forrester Research, til mediet TechTarget

Men det betyder også, at miljøet konkurrerer med Webassembly-programmer, der kan starte endnu hurtigere, siger han.

Buns ydelse er dog allerede nu interessant nok til at få udviklere til at overveje det som et alternativ til runtimes som Node.js og Deno, udtaler Holger Mueller, som er analytiker i virksomheden Constellation Research.

»I betragtning af Javascripts popularitet på den ene side og dets ydelsesproblemer og kompleksitet på den anden side, er det ikke overraskende, at nye runtime-erstatninger er populære,« siger Holger Mueller til TechTarget.

1 kommentar.  Hop til debatten
Denne artikel er gratis...

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.

Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.

Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.

Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.

Debatten
Log ind eller opret en bruger for at deltage i debatten.
settingsDebatindstillinger
1
25. juli 2022 kl. 10:02

Tak for en god artikel, Tania,

[...] hvis man skal tro projektets egne benchmark

"Skal" man det?

Allerede i 1983 fandt yt ud af læse punkter i bundter af omkring 60 stk i stedet for enkeltvis. Forbedrede køretiden med ca en faktor 60.