{"id":119917,"date":"2024-09-23T15:43:09","date_gmt":"2024-09-23T13:43:09","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/v-javascript-platforme-bun-dobavlena-podderzhka-vyzova-koda-na-yazyke-si"},"modified":"2024-09-23T15:43:09","modified_gmt":"2024-09-23T13:43:09","slug":"v-javascript-platforme-bun-dobavlena-podderzhka-vyzova-koda-na-yazyke-si","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/news\/v-javascript-platforme-bun-dobavlena-podderzhka-vyzova-koda-na-yazyke-si","title":{"rendered":"Die JavaScript-Plattform Bun hat Unterst\u00fctzung f\u00fcr das Aufrufen von C-Code hinzugef\u00fcgt.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>In der Plattform Bun, die als Alternative zu Node.js entwickelt wurde und f\u00fcr die isolierte Ausf\u00fchrung von Anwendungen, die in JavaScript, JSX und TypeScript geschrieben sind, gedacht ist, wurde eine experimentelle M\u00f6glichkeit zur Kompilierung und Ausf\u00fchrung von Handlern, die in C geschrieben sind, implementiert. Zuvor war es erforderlich, entweder N-API-Erweiterungen zu erstellen oder den Code in das WebAssembly (WASM\/WASI)-Format zu kompilieren, was die Entwicklung erschwerte und bestimmte Einschr\u00e4nkungen auferlegte. Jetzt kann C-Code direkt in JavaScript eingebettet und zur Laufzeit mit dem TinyCC-Compiler kompiliert sowie dynamisch gelinkte Bibliotheken eingebunden werden.           import { cc } from 'bun:ffi';       export const {       symbols: { hello },     } = cc({       source: '.\/hello.c',       symbols: {         hello: {           returns: 'void',           args: [],         },       },     });       hello();      <\/p>\n<p>F\u00fcr die Arbeit mit der Programmiersprache C wird die Schicht bun:ffi verwendet, die Quellcode in Maschinenbefehle kompiliert, ihn bei der Ausf\u00fchrung in den Speicher einf\u00fcgt und eine automatische Typkonvertierung zwischen JavaScript und C erm\u00f6glicht. Es wird festgestellt, dass die Overheads bei der Verwendung von kompiliertem C-Code auf ein Minimum reduziert sind und zu einer Verz\u00f6gerung von etwa 2 Nanosekunden pro Aufruf externer C-Funktionen f\u00fchren. Als Beispiel wird gezeigt, wie man direkt auf FFmpeg-Bibliotheken zugreifen kann, um kurze Videos zu konvertieren - indem man Operationen wie das Ablegen eines separaten Prozesses und das Zuweisen von Speicher f\u00fcr jedes Video ausschlie\u00dft, konnte die Gesamtzeit f\u00fcr die Ausf\u00fchrung des Testauftrags bei der Verwendung von bun:ffi um das Dreifache verk\u00fcrzt werden.        <\/p>\n<p>Dar\u00fcber hinaus wurde in der Ausgabe von Bun 1.1.29 f\u00fcr C-Code die Unterst\u00fctzung f\u00fcr N-API (napi) hinzugef\u00fcgt, wodurch in C geschriebene Handler Objekte, Strings, Arrays und andere nicht primitive JavaScript-Werte zur\u00fcckgeben k\u00f6nnen, neben den C-spezifischen Typen wie int und float. Der Mechanismus zum Aufrufen von C-Handlern funktioniert auch bei der dynamischen Lade von beliebigen Bibliotheken mit C ABI, unabh\u00e4ngig davon, in welcher Sprache sie urspr\u00fcnglich geschrieben wurden (C++, Rust, Zig usw.), was es erm\u00f6glicht, Funktionen, die von diesen Bibliotheken bereitgestellt werden, direkt aus JavaScript-Code aufzurufen, ohne eine separate Neukompilierung durchzuf\u00fchren. Zum Beispiel kann jetzt von JavaScript aus auf System-APIs zugegriffen werden.      <\/p>\n<p>Wir erinnern daran, dass das Projekt Bun mit dem Ziel der Kompatibilit\u00e4t zu serverseitigen Anwendungen, die f\u00fcr Node.js geschrieben wurden, entwickelt wird und die meisten Node.js APIs unterst\u00fctzt. Die Plattform umfasst ein Toolkit zur Erstellung und Ausf\u00fchrung von Anwendungen in JavaScript und TypeScript, sowie eine Runtime zum Ausf\u00fchren von JavaScript-Anwendungen ohne Browser, einen Paketmanager (kompatibel mit NPM), ein Test-Toolkit und ein System zur Erstellung eigenst\u00e4ndiger Pakete. In Bezug auf die Performance \u00fcbertrifft Bun Deno und Node.js deutlich (in Tests mit dem React-Framework \u00fcbertrifft die Bun-Plattform Deno um das Doppelte und Node.js fast um das F\u00fcnfzehnfache). Der Code von Bun ist in Zig und C++ geschrieben und wird unter der MIT-Lizenz verbreitet. F\u00fcr die Ausf\u00fchrung von JavaScript kommt die JavaScript-Engine JavaScriptCore und Komponenten des WebKit-Projekts mit zus\u00e4tzlichen Patches zum Einsatz.<br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=61915\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 Bun, \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b Node.js \u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0439 \u0434\u043b\u044f \u043e\u0431\u043e\u0441\u043e\u0431\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u044f\u0437\u044b\u043a\u0430\u0445 JavaScript, JSX \u0438 TypeScript, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438. \u0420\u0430\u043d\u0435\u0435 \u0434\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043b\u0438\u0431\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c N-API-\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u043b\u0438\u0431\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442 WebAssembly (WASM\/WASI), \u0447\u0442\u043e \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u043b\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0438 \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043b\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-119917","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 Bun, \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b Node.js \u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0439 \u0434\u043b\u044f \u043e\u0431\u043e\u0441\u043e\u0431\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u044f\u0437\u044b\u043a\u0430\u0445 JavaScript, JSX \u0438 TypeScript, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/news\/v-javascript-platforme-bun-dobavlena-podderzhka-vyzova-koda-na-yazyke-si\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0412 JavaScript-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 Bun \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0432\u044b\u0437\u043e\u0432\u0430 \u043a\u043e\u0434\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 Bun, \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b Node.js \u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0439 \u0434\u043b\u044f \u043e\u0431\u043e\u0441\u043e\u0431\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u044f\u0437\u044b\u043a\u0430\u0445 JavaScript, JSX \u0438 TypeScript, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/news\/v-javascript-platforme-bun-dobavlena-podderzhka-vyzova-koda-na-yazyke-si\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2024-09-23T13:43:09+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2024-09-23T13:43:09+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47In der JavaScript-Plattform Bun wurde die Unterst\u00fctzung f\u00fcr das Aufrufen von C-Code hinzugef\u00fcgt | ProHoster","description":"Die Bun-Plattform, die als Alternative zu Node.js entwickelt wurde und f\u00fcr die separate Ausf\u00fchrung von Anwendungen, die in JavaScript, JSX und TypeScript geschrieben sind, bestimmt ist, implementiert eine experimentelle M\u00f6glichkeit.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/news\/v-javascript-platforme-bun-dobavlena-podderzhka-vyzova-koda-na-yazyke-si","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0412 JavaScript-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 Bun \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0432\u044b\u0437\u043e\u0432\u0430 \u043a\u043e\u0434\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438 | ProHoster","og:description":"\u0412 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 Bun, \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b Node.js \u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0439 \u0434\u043b\u044f \u043e\u0431\u043e\u0441\u043e\u0431\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u044f\u0437\u044b\u043a\u0430\u0445 JavaScript, JSX \u0438 TypeScript, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c.","og:url":"https:\/\/prohoster.info\/de\/blog\/news\/v-javascript-platforme-bun-dobavlena-podderzhka-vyzova-koda-na-yazyke-si","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2024-09-23T13:43:09+00:00","article:modified_time":"2024-09-23T13:43:09+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"119917","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 06:45:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2026-01-23 06:45:19","updated":"2026-01-23 06:45:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/119917","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=119917"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/119917\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=119917"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=119917"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=119917"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}