タグ

programmingとrustに関するzyzyのブックマーク (11)

  • Why Is SQLite Coded In C

    Note: Sections 2.0 and 3.0 of this article were added in response to comments on Hacker News and Reddit. Since its inception on 2000-05-29, SQLite has been implemented in generic C. C was and continues to be the best language for implementing a software library like SQLite. There are no plans to recode SQLite in any other programming language at this time. The reasons why C is the best language to

    zyzy
    zyzy 2023/09/21
    外言語とのコミュニケーションにかけてはやっぱCを媒介にするのが一番ってのはでかいよな/Rustは組み込み用にstd切るbare metalもできるのでそっちでやるのでは?
  • Async Rust Is A Bad Language

    But to get at whatever the hell I mean by that, we need to talk about why async Rust exists in the first place. Let’s talk about: Modern Concurrency: They’re Green, They’re Mean, & They Ate My Machine Suppose we want our code to go fast. We have two big problems to solve: We want to use the whole computer. Code runs on CPUs, and in 2023, even my phone has eight of the damn things. If I want to use

    Async Rust Is A Bad Language
    zyzy
    zyzy 2023/09/13
    async周りの仕様決定が迷走したの、静的精査を前提にしたRustの設計と根本的に相性が良くなかったからなんだろうな……とは思う。そもそもの食い合わせが悪い
  • Rustで型レベルプログラミング

    はじめに 通常のプログラムは実行時(ランタイム)に1 + 1など様々な計算を行う。一方でコンパイラーを持つ言語では、コンパイラーの型検査やジェネリクスなどの機構を利用して、コンパイル時にも計算を行うことができる。このようなプログラミングを、コンパイル時に検査・推論される“型”[1]に注目して型レベルプログラミングと呼ばれる。 ランタイムの計算の中にはたとえばwhile(1);のような簡単な計算で無限ループといった停止しない状況に陥いることがある。コンパイル時にできる計算でこのように無限ループに陥いってコンパイルが停止しなくなってしまったら、プログラムを実行することなく自明なエラー(型があってないとか、Rustであればfreeするタイミングが自明でないなど)を検出しようというモチベーションが崩壊してしまう。したがってコンパイル時にできる計算とはランタイムに比べて非常に限定された計算しか許可さ

    Rustで型レベルプログラミング
    zyzy
    zyzy 2022/09/05
    みんな大好きな奴
  • PlayStationエミュレータ作りに取り組んだ

    最近暇だったのでPlayStationのエミュレータ作りに取り組みました。そのまとめをしたいと思います。 PlayStationエミュレータ作りと聞くと難しそうに聞こえますが、実はかなり分かりやすいガイドブックが存在し、これに従うことであまり詰まることなく実装できました。 結果として5日ほどで、懐かしいオレンジのロゴが見れる程度の必要最低限の実装が行えたので、紹介したいと思います。 ※テクスチャは未実装なのでロゴが赤い四角になってる The ガイドブック 以下のPDFは、CPUの仕組みの簡単な説明から入り、0からBIOSのオレンジのロゴが表示できることろまで網羅した神ガイドブックです。言語は英語Rustです。 https://svkt.org/~simias/guide.pdf 普段のエミュレータ作りで時間のかかる作業は: 地獄のデバッグ PCのタイミング調整(パイプラインがある場合)

    PlayStationエミュレータ作りに取り組んだ
    zyzy
    zyzy 2022/07/11
    新しい奴の方がアーキテクチャは綺麗なんかねやっぱ/biosないとブートできないが一般的なbiosでは対応してない、って所理解してない人がおるな
  • GitHub - mintlify/writer: ✍️ AI powered documentation writer

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - mintlify/writer: ✍️ AI powered documentation writer
    zyzy
    zyzy 2022/07/05
    ちょっと面白そう
  • Rust AST 入門

    これは、簡単な Rust の AST をざっと読めるようになる、もしくは該当のドキュメントを読めるようになる、といったことを目的としたものである。入門といっても網羅的なものではなく、雰囲気を掴んでほしいという意味合いで書いたものであって細かいところまでは説明しないつもりである。なお Rust には型などより多くの情報も含む HIR などいくつかの AST があるが、ここではコンパイル時に最初に作られる AST についてのみふれる。 プログラミング言語で一般的に述べられる AST 自体についてはここでは説明しないので他を参照するとよい。有用そうなもののリンクは以下の通りである。 ASTs - What are they and how to use them Crafting Interpreters また、AST を確認するというと AST explorer も有用だが、 AST expl

    Rust AST 入門
    zyzy
    zyzy 2021/12/12
    Procedural macro書こうと思ったら理解していないと駄目らしいが、まだ全然わからん……
  • Rustの構造体メモリレイアウト - ryochack.blog

    Rustの構造体のメモリレイアウトについてのメモ。 Rustで次のような構造体を定義したときに、構造体のメモリレイアウトはどうなるか? struct Layout { b1: u8, s1: u16, b2: u8, w1: u32, b3: u8, w2: u32, s2: u16, s3: u16, } 検証時のRustのバージョンは次の通り。 stable-x86_64-unknown-linux-gnu rustc 1.24.1 (d3ae9a9e0 2018-02-27) TL;DR 先に結論を書く。 アトリビュート指定によって構造体のメモリレイアウトとサイズは以下のように変化する。 デフォルト 構造体サイズ20Byte repr(C)アトリビュート指定 構造体サイズ24Byte repr(packed)アトリビュート指定 構造体サイズ17Byte 以下に確認の過程を残しておく。

    Rustの構造体メモリレイアウト - ryochack.blog
    zyzy
    zyzy 2021/11/14
    知らなかった。賢いなぁ。
  • Actix - actor framework for Rust

    ActixActix Web is a powerful, pragmatic, and extremely fast web framework for Rust

    zyzy
    zyzy 2021/10/19
    rust版Akka-HTTPらしい。ActixがActorシステムでその上にActix-webが乗る、と。Actixの下はtokioとのこと
  • Rustの非同期プログラミングをマスターする - OPTiM TECH BLOG

    こんにちは、R&Dチームの齋藤(@aznhe21)です。 さあみなさん、ついにこの時がやってまいりました。 日2019/11/8にリリースされたRust 1.39により、あらゆる環境で最高速な非同期プログラミングが可能になりました。 新たな時代に乗り遅れないよう、今のうちにRustでの非同期プログラミングをマスターしておきましょう。 なお、この記事は、先日開催したOPTiM TECH BLOG Meetupの内容を大幅に加筆修正した上でエントリに仕上げたものです。 まず最初に伝えたいこと 非同期の歴史 Rustの非同期プログラミングの歴史 Rust 1.0以前 Rust 1.0 〜Rust 1.3 Rust 1.2あたり Rust 1.11あたり Rust 1.26あたり Rust 1.36 Rust 1.39 Rustの非同期プログラミングの特徴 ゼロコスト抽象化 プラットフォーム非依

    Rustの非同期プログラミングをマスターする - OPTiM TECH BLOG
    zyzy
    zyzy 2019/11/08
    歴史的経緯が本当にカオスってたのでありがたい。
  • Announcing Rust 1.0 | Rust Blog

    Today we are very proud to announce the 1.0 release of Rust, a new programming language aiming to make it easier to build reliable, efficient systems. Rust combines low-level control over performance with high-level convenience and safety guarantees. Better yet, it achieves these goals without requiring a garbage collector or runtime, making it possible to use Rust libraries as a "drop-in replacem

    Announcing Rust 1.0 | Rust Blog
    zyzy
    zyzy 2015/05/16
    穴あきだらけだと思ってたドキュメントも綺麗にそろったな……。
  • Announcing Rust 1.0 Beta | Rust Blog

    Today we are excited to announce the release of Rust 1.0 beta! The beta release marks a very significant "state transition" in the move towards 1.0. In particular, with the beta release, all libraries and language features that are planned to be stable for 1.0 have been marked as stable. As such, the beta release represents an accurate preview of what Rust 1.0 will include. To see what has changed

    Announcing Rust 1.0 Beta | Rust Blog
    zyzy
    zyzy 2015/04/08
    ふおおお、ちょっと見ない間に正式リリース秒読み段階に。ここまできたら意外と早かった
  • 1