タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

zigに関するcrafのブックマーク (6)

  • Denoで困ったときはZigで何とかなるかもしれない

    サードパーティライブラリが無いよ問題 いきなりネガティブな話で申し訳ございません。愚痴みたいなものです。題ではありませんので読み飛ばしていただいて問題ありません。 Denoユーザーの1人としての個人的な印象として、Denoの勢いは2023年に入った頃から低迷しているように感じます。2022年末からnpm対応によってNode.jsの資産を使えるようになったにも関わらずです。実際のユーザー数はDenoチームではないので分かりませんが、登場から数年経って真新しさも無くなったので、どんなサービスにもありがちなことなのかなと思います。 ありがちとはいえ、ただ低迷しているだけではありません。ここからNode.jsを超えるのはなかなか難しいです。なぜならnpm対応というのは、明示的にNode.jsに対して「生き残っていい」それどころか「あなたが正しい」と宣言してしまったようなものです。Node.jsの

    Denoで困ったときはZigで何とかなるかもしれない
    craf
    craf 2023/08/22
  • 「ZigはCよりも速いです。」をVector/SIMD最適化で検証する

    「パフォーマンスについて言えば、ZigはCよりも速いです。」 この一文は Zig 言語の公式サイトの詳細な概要に実際に書いてある文章です。 その理由としていくつか挙げた上で最後にちらっと「ZigSIMD ベクトル型を直接公開しており、移植性の高いベクトル化コードを簡単に記述することができます。」と書いてあります。今回の記事では画像処理っぽいお題を使って実際に SIMD 最適化される様子を検証してみます。 ベンチマーク環境 OS: Ubuntu20.04 on WSL2 on Windows11 CPU: AMD Ryzen 9 5900X 12-Core Processor お題 一般的な画像データ構造の表現である、幅×高さ×4(RGBA)の長さを持つ8bit整数の配列を受け取り、in-placeでRGBの値を 10 加算して明るくするという関数を考えます。Aの値は元のままとします。

    「ZigはCよりも速いです。」をVector/SIMD最適化で検証する
    craf
    craf 2023/01/21
  • Zigでコンパイルエラーになって書き方がわからないとき

    Zig言語は型に厳しい Zigは型に関して厳しい言語です。 以下のようなコードを書いたときに、たぶん型変換のことでエラーになるだろうなあと思いつつコンパイルしてみると const std = @import("std"); const expect = std.testing.expect; fn func(x: i32) u8 { return x & 0xff; } test "truncate" { try expect(func(0x1234) == 0x34); } $ zig test a.zig a.zig:5:14: error: expected type 'u8', found 'i32' return x & 0xff; ~~^~~~~~ a.zig:5:14: note: unsigned 8-bit int cannot represent all possibl

    Zigでコンパイルエラーになって書き方がわからないとき
    craf
    craf 2023/01/16
  • 5分でざっと理解するZig言語

    Zig言語の話をするときに、初めての人にざっと読んでもらうためのページ。 Zig言語とは 静的型付きのコンパイル言語。C言語と同じ立ち位置。 ziglang.org のoverview 日Wikipedia Wikipedia 英語版 ドキュメント 標準ライブラリのリファレンス 現在の状況 まだ開発中で正式リリースには至っていない。なのでまだ破壊的変更はあり得る。 記事を書いた時点の安定版タグは0.10.0。 公式なパッケージマネージャはまだない。[1](非公式なものは複数存在する) ** 2023/08/15 追記 ** 安定版0.11.0のリリースとともに公式版パッケージマネージャが利用可能になりました。 私が考えたキャッチコピー 「C言語が誕生したのは1972年。Zig言語はそれを2020年代の知見で再構成するもの。50年分の進化!!」 "C but with the p

    5分でざっと理解するZig言語
    craf
    craf 2023/01/11
  • Zigのサンプルプログラムをビルドするのに便利なMakefile

    記事はZigアドベントカレンダー21日目の記事です。 Zig用の簡単なMakefile ソースファイルがひとつだけのようなサンプルプログラムで、しかもserverとclientの2つの実行ファイルをビルドする場合には zig init-exe で作成されるディレクトリ構成はおおげさすぎると感じました。 そこで以下のようなMakefileを書きました。

    Zigのサンプルプログラムをビルドするのに便利なMakefile
    craf
    craf 2022/12/21
  • ZigでLinuxのepollとsignalfdのシステムコールを使うサンプルプログラム

    Zig Advent Calendar 2022 に参加しています。 あるプログラムを作ろうと思ったのですが、それにはepollとsignalfdのシステムコールを使うのが良さそうだということがわかりました。これらのシステムコールを使うのは初めてだったのでまずは理解のために簡単なサンプルプログラムを作りました。そしてせっかくなのでそれをZig言語で書き直しました。 システムコール epoll について epollはLinuxでのI/Oイベントの通知のしくみです。これを使って複数の入出力を待つことができます。似たものにselectやpollがありますが、epollはそれらの中でも後発で、他のものにあった欠点を解決し柔軟性も性能も高いものになっています。なので、これから新規に作るならばepollを使うのがよいでしょう。なお、Zig言語のライブラリのstd.os.linuxではselectはサポ

    ZigでLinuxのepollとsignalfdのシステムコールを使うサンプルプログラム
    craf
    craf 2022/12/18
  • 1