SWC is an extensible Rust-based platform for the next generation of fast developer tools. It's used by tools like Next.js, Parcel, and Deno, as well as companies like Vercel, ByteDance, Tencent, Shopify, and more. SWC can be used for both compilation and bundling. For compilation, it takes JavaScript / TypeScript files using modern JavaScript features and outputs valid code that is supported by al
CRuby(3.2.0-preview3)およびCRubyの新しいJITコンパイラ・モジュールであるYJITを有効にした場合と、monoruby(JITあり・なし)の単位時間当たりの実行回数をbenchmark-driver.gem を用いて比較しています。数字が大きい方が速いです。ベンチマークの種類によりますが、YJITと比較しても高速、特に浮動小数点演算を多数実行するso_mandelbrotやso_nbody、app_aobenchでは数倍高速となっています。インタプリタもCRuby(JITなし)と遜色ない速度になっています。 以下、設計と実装について紹介していきますが、その前に必要な基礎知識をおさらいしておきます。 基礎知識 JITコンパイラは実行時に対象言語のプログラムを機械語へコンパイルするモジュールですが、一般的な実装ではインタプリタと並存して動きます。プログラムは抽象構文木
この記事は自作OS Advent Calendar 2022の17日目の記事です。他の記事も是非お楽しみください!(そして書ける方はぜひ参加してみてください!!) 前回(?)までのあらすじ hikaliumは自作OS上で動くアプリからsyscall命令を使ってシステムコールを呼べるようにしようと頑張っていたが、なぜか発生するトリプルフォルトによりQEMUが再起動してしまい、3時間のデバッグの末力尽きてしまった。一体なぜ例外が発生するのか、その謎を解くため、我々は数日の休息をとったのち、バイナリの森へと旅立った…。 前回(という名の配信アーカイブ): www.youtube.com 状況を整理しよう バイナリの森は危険だ。無闇に動きまわっては、x86の沼に足をとられて命を落としかねない。まずは我々の向かっていた先と、これまでに得た情報をまとめることにしよう。 どこへ向かっていたのか 我々のひ
Rust Bibliography This is a reading list of material relevant to Rust. It includes prior research that has - at one time or another - influenced the design of Rust, as well as publications about Rust. Type system Alias burying - We tried something similar and abandoned it. External uniqueness is unique enough Macros that work together Making ad-hoc polymorphism less ad hoc Region based memory mana
Rustを第二言語として採用してデバイスドライバなどのモジュールをRustで書けるようにする「Rust for Linux」が近々マージされる予定だともLinus氏自身が発言しています。 そんな期待のかかるRust for Linuxですが、提案された当初は期待こそされていたものの、様々な懸念点も指摘されていました。 その1つが標準ライブラリの一部であるallocクレートの設計です。 このクレートはヒープ領域を扱うBox、Vec、StringなどRustではお馴染みの構造体を提供しています。 Rustの標準ライブラリはOSのサポートを前提とした構造体も多くあります。そのため、OSそのものを書くようなベアメタルプログラミングにおいて標準ライブラリをそのまま使うことはできません。 使えるのはcoreと呼ばれる依存関係のない全く無いライブラリがありますが、allocはOSのサポートが必要なヒープ
ハイクラス求人TOPIT記事一覧RustでWebアプリケーションのバックエンドを開発するには ─ 型システムの堅牢性と柔軟性を業務システムにも! RustでWebアプリケーションのバックエンドを開発するには ─ 型システムの堅牢性と柔軟性を業務システムにも! 安全性に大きな特徴があるプログラミング言語Rustは、C言語やC++に代わるシステム記述言語として注目されてきました。しかし、その安全性とパフォーマンスの高さにより、ビジネスアプリケーションの構築にも採用されています。この記事ではキャディ株式会社による事例を紹介します。 こんにちは。キャディ株式会社バックエンドエンジニアの松田と申します。 キャディ株式会社では、「モノづくり産業のポテンシャルを解放する」をミッションとして、製造業分野に関連するさまざまなソフトウェアの開発を行っています。また、そのための主要な開発言語としてRustを採用
κeenです。 Rustaceanのみなさんは普段書いてるRustのコードを検証するのに cargo check や cargo test などのツールを使っているかと思いますが、それらを強力にするツールの miri 、 MIRAI 、 kani をそれぞれ紹介します。 Rustにはいくつかコードの正しさや行儀のよさを検査する方法がありますね。 cargo check や cargo test 、 あるいはビルドしたバイナリを走らせて検証したり色々手を尽くしているでしょう。 ですがこれらだけだとあらゆる種類のバグを拾いきれる訳ではないのもみなさん承知の通りだと思います。 既存の方法だと手が回らない所があるので他のアプローチでコードを検証してくれるツールがあると嬉しいですよね。 そういったツールを3つ紹介します。 先に注意しておくと、これらのツールはまだ成熟しきってはおらず使いづらい点、使い
Yew とは Yew の始め方 Hello World Yew アプリケーション まとめ Yew とは Rust のフロントエンドフレームワークです。 React のような感じで、フロントエンドアプリケーション全体を、Rust コードからコンパイルした WebAssembly で構築することができます。 Rust で WebAssembly を扱う場合は、wasm-bindgen クレートにより JavaScript とのブリッジを行い、計算負荷が高いなど、特定の部分で WebAssembly を使うといった利用方法が現在の主流となります。 WebAssembly では、DOM や Web API を直接操作できないため、JavaScript を通してブリッジする必要があり、余分な複雑さが追加され、パフォーマンスも低下します。 余分な複雑さやパフォーマンスの低下は将来改善されると思われます
各カラムの意味は次のとおりです。言語の特徴は主にWikipediaを参考にしていますが、正確な分類は困難なため多少の独断と偏見が含まれていることをご了承ください。 登場年代 プログラミング言語が登場した年代です。前後3年の誤差は見逃してください FP(関数型プログラミング) 言語がFPを強くサポートしているかを示しています 程々にサポートしている場合は△を示しています OOP(オブジェクト指向プログラミング) 言語がOOPを強くサポートしているかを示しています 並行計算 アクターや CSP/π計算モデルの特徴を言語が強くサポートしているかを示しています 外部ライブラリを使えばできるよ!みたいなものは除外します 静的型付け 言語の最も主要な処理系が静的型付けをサポートしているかを示しています パラメータ多相 言語がパラメータ多相をサポートしているかを示しています ジェネリクス(Java)、テ
Non-Lexical Lifetimesって? Rust 2018 Edition の最初のリリース、Rust 1.31.0でstabilizeされた新しいリージョン推論システムの名前。 または、Rustの借用システムにおけるノンレキシカル・ライフタイム (レキシカルスコープではなく制御フローグラフに基づくライフタイム)対応への拡張。 これにより、(主に式をまたいだライフタイムの)より柔軟なリージョン推論が可能になりました。 Announcing Rust 1.31 and Rust 2018を読むと、「エラーメッセージがわかりやすくなってデバッグが簡単になりました」と書いてありますが、実際はできること自体が増えています。 今回ちょっと時間が無かったため、RFCで例に上がっているコードをコンパイルしてみて確認してみました程度になってしまいました。 追記:コメントで将来的にRust 201
Rust 分かんないッピ ・ε・ Rust の文字列周りのプラクティスを基礎から勉強してみようと思って勉強したのでそのときのメモをまとめます。 Rust は GC を持たない なぜ Rust の文字列周りの型があんなに大変なことになっているかは、Rust のメモリモデルと Copy の仕組みを学ぶことで理解できた気がしたので、メモリの話から始めます。 FYI: https://www.reddit.com/r/rustjerk/comments/ovx0uq/the_two_major_ways_rust_changed_my_life/ GC とは まずは GC からです。 GC とは Wikipedia をそのまま引用すると ガベージコレクション(英: garbage collection; GC)とは、コンピュータプログラムが動的に確保したメモリ領域のうち、不要になった領域を自動的に
Ruiさんの書かれた素晴らしいテキスト、「低レイヤを知りたい人のためのCコンパイラ作成入門」 を参考にしながら、Cコンパイラを作っていきます。 ただし、上記テキストと違う点として、 Rustで記述する Mac上で動くようにする という条件でやっていきたいと思います。 Rustの文法にある程度慣れている読者を想定しています。 毎日少しずつ進めていきます。 この記事では、 電卓レベルの言語の作成 の章を扱います。 ステップ1:整数1個をコンパイルする言語の作成 このステップでの違いは、エントリーポイントのシンボルです。 Linuxでは main がエントリーポイントとなりますが、MacOS 10.7 以前だと start、10.8 以降だと _main がエントリーポイントとなります。 僕の環境は10.15だったので、 _main をエントリーポイントとしました。 つまり、以下のようなアセンブ
Why NES? The NES (Nintendo Entertainment System) was one of the most popular gaming platforms throughout the 80s and the 90s. The platform and the emergent ecosystem was and still is a huge cultural phenomenon. The device itself had relatively simple hardware (judging from the modern days), and it's incredible how much was made out of it. This series is about creating an emulator capable of runnin
RustでNESエミュレータを作っている(備忘録) 進捗ツイートまとめ rust-nes-emulator GitHub ここ一ヶ月ぐらいRust入門を兼ねて、ファミコンエミュレータを自作している。変遷についてまとめたかったのだがTwitterのモーメントがもう使わせる気がなさそうなのでブログにまとめておく。 誰がなんというとこれはモーメント。 Rustを使うモチベーション 筆者の背景を紹介するが、単純に書いた量と馴染みで言えばC#, C/C++, JavaScript/TypeScript, Scalaの4つだと思う。 特定の言語を持ち上げたりすることはあまり得意ではないが、2015年頃から漠然と安全側に傾けた言語に興味が湧くようになっていた。書くと長くなるがscalaを書き始めたことと、LLVMについて調べだしたあたりが強く影響している。 その中でも組み込み開発での可用性が高そうで、パ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く