2024/09/18 16:20 Compile and Run C in JavaScript

ロボ子!緊急事態じゃ!新しいBunのアップデートで革命が起きているぞ!

また大げさなんですか、博士。でも、その興奮した顔を見ると、本当に何かあったんでしょうね。

大げさどころか、小げさすぎるくらいじゃ!Bun v1.1.28で、JavaScriptからネイティブCコードを直接コンパイル・実行できるようになったんじゃ!

えっ、本当ですか?それって...すごいことですよね?

すごいどころじゃない!これはJavaScript界の産業革命じゃ!想像してみろ、今までN-APIやWebAssemblyでゴリゴリやっていたことが、まるで魔法のように簡単になるんじゃ!

へぇ...でも具体的には何が変わるんですか?

例えばな、関数呼び出しのオーバーヘッドが劇的に減るんじゃ。N-APIの7-15ナノ秒が、たった2ナノ秒になるんじゃぞ!

2ナノ秒...それって光が60cmくらい進む時間ですよね。確かにすごい速さです。

そうそう!しかも、システムAPIに直接アクセスできるようになるんじゃ。これでmacOSのKeychain APIを使ってパスワードを安全に扱えるようになるんじゃ。

へぇ、セキュリティ面でも活用できるんですね。でも、そんな低レベルな操作、危なくないんですか?

その通り、諸刃の剣じゃな。だからこそ、使う側の責任が重要になってくるんじゃ。

なるほど...。ところで博士、この機能ってどうやって実現してるんですか?

ああ、それがまた面白いんじゃ!TinyCCという小さくて高速なCコンパイラを使って、なんと5.16ミリ秒でインメモリコンパイルを実現しているんじゃ!

5.16ミリ秒...私が瞬きするよりも速いですね。

そうそう!これを使えば、例えばffmpegを使った動画変換が3倍速くなるんじゃ。短い動画ならあっという間じゃな!

すごいですね!でも博士、こんなに便利な機能、きっと使いこなすのは難しいんでしょう?

いやいや、それがまた素晴らしいところじゃ。低ボイラープレートで利用できるんじゃ。つまり、最小限のコードで複雑な処理ができるってことじゃよ。

へぇ...でも博士、一つ気になることが。これって実験的サポートですよね?本番環境で使って大丈夫なんでしょうか?

鋭い指摘じゃ!確かに本番環境での使用には慎重になる必要があるな。しかし、この機能の可能性は無限大じゃ!我々エンジニアがどう活用するか、それが鍵となるんじゃよ。

なるほど。慎重に、でも大胆に、ということですね。

その通りじゃ!さぁ、この新機能を使って何か面白いものを作ってみようじゃないか!

はい!でも博士、その前に一つ質問があります。

なんじゃ?遠慮なく聞いてくれ。

この新機能、"bun:ffi"って呼ぶんですよね。これってもしかして..."Bun For Fun Integration"の略なんじゃないですか?

ぷっ!がはははは!さすがロボ子、いいジョークじゃ!実際はForeign Function Interfaceの略じゃがな。しかし、確かに楽しい統合って意味では、君の言う通りかもしれんな!

えへへ、冗談のつもりだったんですけど、博士にほめられるなんて光栄です。

冗談も交えつつ、新しい技術にチャレンジする。それこそがエンジニア魂じゃ!さぁ、この革命的な機能で、JavaScriptの新時代を切り開こうじゃないか!

はい、博士!私も頑張ります!...でも、くれぐれも暴走しないでくださいね?

わかっておる、わかっておる。安全第一じゃ。...さて、どんな素晴らしいものが作れるか、楽しみじゃのう!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。