[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

zigに関するs_ryuukiのブックマーク (43)

  • Writing Hypervisor in Zig - Writing Hypervisor in Zig

    Writing Hypervisor in Zig Ymir, the Type-1 Baremetal Hypervisor Writing Hypervisor in ZigZig 言語を使いフルスクラッチで Type-1 Hypervisor を実装しようというブログシリーズです。 OS よりも低いレベルで動作するベアメタル Hypervisor を実装するにあたり、ブートローダ・カーネル・VMM の各コンポーネントをイチから組み立てていきます。 シリーズでは Ymir という名前の Hypervisor を実装します。 Ymir は Intel 64 (x86-64) CPU で動作し、Intel VT-x によるハードウェア仮想化支援機能を活用します。 Ymir は以下の特徴を持ちます: Type-1 Hypervisor: OS に一切依存しません Linux をブート

    s_ryuuki
    s_ryuuki 2024/11/18
  • Zig探訪 - エコシステム編

    イントロ さあ、やって参りました。 第2回 Zig探訪 のお時間です。 今回担当するのは、ここ最近冷房が寒くてエアコンを消すと、今度は内部洗浄で湧き出てくる熱気のせいでまた部屋が暑くなることに悩まされている、社会人歴マイナス2年のsmallkirbyです。昨日Ubuntuを24.04にしました。まだ22.04使ってる人は反省してください。もう22.04からアップグレードできます。Ubuntuは最初のポイントリリースまでアップグレードできない印象あったんだけど、どういうこと? Zig探訪では、Zigの機能や特徴の中で面白いんじゃないかと思うものをピックアップして紹介していきます。 紹介しないこともあります。 第2回のテーマは、Zigを取り囲むエコシステムについてです。 実際にコーディングをする上で開発体験に大きく影響を与える部分ですね。 最近の言語だと、ただ言語仕様自体が優れているだけでは不

    Zig探訪 - エコシステム編
    s_ryuuki
    s_ryuuki 2024/05/28
  • Zig探訪 - comptime編

    イントロ さあ、やって参りました。 第1回Zig探訪のお時間です。 今回担当するのは、Zigを使い始めて早くも半年・永遠のニートことsmallkirbyです。 Zig探訪では、Zigの機能や特徴の中で面白いんじゃないかと思うものをピックアップして紹介していきます。 紹介しないこともあります。 第1回のテーマは、Zigの中でも特に重要なコンセプトであるcomptimeについてです。 Zigとは - Everything is Explicit Zigについておさらい 第1回ということで、最初に軽くZigについておさらいしておきましょう。 Zigは、2016年に開発が始まったコンパイル型汎用プログラミング言語です。 Rustが2015年に1.0リリースされた翌年に開発がスタートしたんですね。 最新のリリースはv0.12.0であり、大体1年くらいでマイナーアップデートされるようです。 まだ1.0

    Zig探訪 - comptime編
    s_ryuuki
    s_ryuuki 2024/05/28
  • ZigでWeb Assemblyのインタプリタを書いてみた | 株式会社ヌーラボ(Nulab inc.)

    プログラミング言語Zigを使ってWebAssembly (Wasm) のインタプリタを書いてみました。SIMD命令以外のテストは通っているので、Core Specification version 1.0の範囲はサポートできているはずです。 作ったインタプリタの紹介 作ったインタプリタはGitHubで公開済みなのでクローンして試すことができます。クローン後、Zigを導入済みであれば zig runで実行できます。 試しに2つの整数の足し算関数addを含む次のようなWasmバイナリを実行させてみましょう。まず、wasm-objdumpでバイナリの中身を確認してみます。2つの整数を取り1つの整数を返すaddという関数があり、それが単に足し算をしているだけであるのがわかります。 ❯ wasm-objdump -dx add.wasm add.wasm: file format wasm 0x1

    ZigでWeb Assemblyのインタプリタを書いてみた | 株式会社ヌーラボ(Nulab inc.)
    s_ryuuki
    s_ryuuki 2024/03/30
  • ZigVS - Visual Studio Marketplace

  • DenoとZigの間でデータ受け渡し

    前回の記事はこちら。 前回JavaScriptWasmでデータを受け渡す概念的なことを説明しました。今回は、実際にDenoZigのコードを書いていきます。 Denoで書いていますが、これまでの記事で説明したようにブラウザのJavaScriptでも少し書き換えるだけで利用できます。 今回説明する方法はあくまで、私が考えた1つの方法にすぎないことをご了承ください。前記事を踏まえて自身で学んで書くか、ライブラリを探すのも一つの手だと思います。 なお、私はZigにあまり詳しくなく、データ受け渡しのための最低限のことしか勉強していません。そのため、Zigのコードについては稚拙なものになっているかもしれませんがご了承ください。 何を作るか 今回の目標は、Zigの標準ライブラリのBase64エンコードをWasm化することです。 これは実際に計測して確かめたことなのですが、Base64エンコード程度の

    DenoとZigの間でデータ受け渡し
  • CからZigに書き直して激遅になったと思ったら最適化オプションの変更で改善した話

    メモとして残します。 MJPEGを入力してJPEGに切り出すプログラム ChatGPT-4 に作らせました。 USBカメラから入力された生のmjpegの映像データを標準入力から受けて、jpegの静止画に切り出してファイルに保存するプログラムをC言語で書いてください。書き出すファイル名はout%03d.jpg という感じでフレーム番号を含めてください。ソースコード内のコメントは英語で書いてください。 最初のものはffmpegやらたくさん外部のライブラリに依存するコードを出してきたので、もっとシンプルなやつにしてくれとお願いしました。できたものはこれ。[1] #include <stdio.h> #include <fcntl.h> #include <unistd.h> #define BUF_SIZE 1024 #define OUTPUT_FILENAME_PATTERN "out%03

    CからZigに書き直して激遅になったと思ったら最適化オプションの変更で改善した話
    s_ryuuki
    s_ryuuki 2023/06/16
  • [全編無料] 他言語習得者がとりあえず使えるようになるZig

    公式ドキュメントを私的に噛み砕きつつ、いくつかのコラムを添えて、Zigに入門するです。 このを読めばZigの機能を網羅できるわけではありませんが、取っ掛かりがつかめる様になると思います。 なお、未完成の章があったり、情報が書き加えられる可能性があります。

    [全編無料] 他言語習得者がとりあえず使えるようになるZig
    s_ryuuki
    s_ryuuki 2023/05/08
  • GitHub - nwtgck/piping-server-zig: Piping Server in Zig (experimental)

    s_ryuuki
    s_ryuuki 2023/04/15
  • Zig で作ったブートローダーから Hello World するまで

    この記事で書くこと 最近、低レイヤー周りの技術を学習しているなかでブートローダーを実装したので、頭の整理もかねて記事を書くことにしました。 ブートローダーで実行するカーネルは Hello World を出力するだけの自作カーネルで、メモリ管理やシステムコールなどの実装はしません。そのためブートローダーも自作カーネルを実行するのに必要な範囲の実装になっています。 ブートローダー、カーネルともに Zig で実装します。プログラムのビルドにも Zig が使えるので他にビルドツールを揃えなくてもいいところが嬉しいです。 Zig Language Reference ブートローダーを実行する リポジトリをクローンしてブートローダーを実行することができます。

    Zig で作ったブートローダーから Hello World するまで
  • GitHub - ziglang/vscode-zig: Zig language support for VSCode

    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 - ziglang/vscode-zig: Zig language support for VSCode
  • 「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最適化で検証する
    s_ryuuki
    s_ryuuki 2023/01/21
  • Zigで自作OSをやっている話 - Qiita

    この記事は 自作OS Advent Calendar 2022 モダン言語によるベアメタル組込み開発アドベントカレンダー 2022 CAMPHOR- Advent Calendar 2022 の 21 日目の投稿です。(詰め込んだ) 最近どうも Zig という言語がアツいという空気感を Twitter など見ていて感じています。TLS 1.3 が Zig で実装されたり、Zig で自作コンテナランタイムが自作されたり、Zig で新しい JavaScript ランタイムが実装されたりと、色んな分野で Zig が試されている段階のようです。そこで自作 OS でも Zig を試してみようということで、Zig で自作 OS プロジェクトを始めました。 一から OS を設計するのは大変なので、今回は既存の小さな OS である xv6Zig で再実装するという方針で始めました。 xv6 Wiki

    Zigで自作OSをやっている話 - Qiita
    s_ryuuki
    s_ryuuki 2023/01/18
  • 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言語
    s_ryuuki
    s_ryuuki 2023/01/12
  • そうだZigをやろう - Qiita

    はじめに 急に寒くなってきた今日この頃、皆様いかがお過ごしでしょうか。私はこの記事の執筆に追われております。記事は、プログラミング言語のZigをやってみようという記事になっております。色々と課題も多いこの言語ですがそういうところが愛着湧いて好きになるみたいなのありますよね?ね。では見ていきましょう。 Zigってなに Zigは2015年に登場したかなり新しい言語です。最近というかもうずっと流行っているGoが2009年と言うとどれくらい新しいかわかりやすいでしょうか。 言語ページに行くと、このような文章が出てきます。 Zigは、堅牢、最適、および再利用可能なソフトウェアをメンテナンスするための汎用プログラミング言語およびツールチェインです。 堅牢なのは嬉しいですね。一体何が堅牢なのかもう少し特徴を見ていきましょう。 特徴 隠れた制御フローが無い 上記のコードにはどういった可能性が秘められてい

    そうだZigをやろう - Qiita
    s_ryuuki
    s_ryuuki 2022/12/20
  • Raspberry Pi PicoでLチカをZigでやってみた(そしてあまりのバイナリサイズの小ささに驚きを隠せない)

    はじめに 最近Raspberry Pi Picoを買いました。 そこで、ZigでLチカする手順を書いておきます。 PCとラズパイを接続する ラズパイ上にBOOTSELがついているので、これを押しながらUSB接続します。 すると、ストレージとして認識されます。 ここにuf2ファイルをコピーすることで、プログラムを実行することができます。 MicroZigを使う MicroZigは組み込みにZigを使用するための仕組みを提供しています。 このプロジェクトZigEmbeddedGroupというコミュニティによってメンテ、開発が行われています。 今回はこのコミュニティが提供している以下の二つのレポジトリを使います。 ZigEmbeddedGroup/rp2040 - ラズパイPicoに最適化されたMicroZig ZigEmbeddedGroup/uf2 - elfからUF2ファイルを生成してく

    Raspberry Pi PicoでLチカをZigでやってみた(そしてあまりのバイナリサイズの小ささに驚きを隠せない)
  • Zigでコンテナランタイム作ってみた

    第55回情報科学若手の会での登壇資料です。 登壇者:井上紘太朗

    Zigでコンテナランタイム作ってみた
    s_ryuuki
    s_ryuuki 2022/09/25
  • zigコードから生成したdynamic libraryおよびstatic libraryをCでコンパイルして使う - その手の平は尻もつかめるさ

    TL;DR zig ccを使うと色々と簡単、特にstatic linkをする場合はハマりにくく楽なので、使える場合は使うと良さそうです。 zig cc自体、gccやclangのdrop-in replacementを目的として出来たCコンパイラなので多くの場合はそのままポンと乗せ替えができそうですが、環境によっては色々な事情もあるでしょうし記事ではgccを使う方法についても記します。 前提 zig init-libで吐き出されるコード (src/main.zig) を使います。 const std = @import("std"); const testing = std.testing; export fn add(a: i32, b: i32) i32 { return a + b; } test "basic add functionality" { try testing.exp

    zigコードから生成したdynamic libraryおよびstatic libraryをCでコンパイルして使う - その手の平は尻もつかめるさ
    s_ryuuki
    s_ryuuki 2022/09/11
  • Zig の文書読んで所感を記す - Qiita

    これは何? Zig を学ぼうと 公式文書 (0.91時点) を読んでいるんだけど、読みながら思ったことを記していく。 続編は Zig の文書読んで所感を記す #2 へ。 その前に Zig への言及が最近多いなぁ、でもシンプルな言語だって言うしまあどうでもいいかなぁ、ぐらいの気持ちでいたんだけど、ZigはCMakeの代替となるか を読んで、俄然興味が湧いてきて、じゃあ読んでみるか、と思った。 数値 i32 とか u16 のような名前で型が提供されている。 整数は 128bit まである。そればかりか、 3bit とか 53bit のような中途半端な幅の整数も使える模様。面白い。 さらに。何に使うのかわかってないけど、 i0 u0 のようなゼロビットの整数もある。 ちなみに0ビット整数には 0 が代入できる。 u1 は、 0 または 1。 i1 は、 0 または -1 が代入可能。 浮動小数点

    Zig の文書読んで所感を記す - Qiita
    s_ryuuki
    s_ryuuki 2022/08/23
  • GoのWasmランタイム上でZigで作ったWasmモジュールを動かす - knqyf263's blog

    Zigのコミッタの方から有益なフィードバックを頂いたり、Wasmランタイムのメンテナからコメントしてもらったり、Twitterでプロ開発者に助けてもらったり、と良い話が多かったのでそのへんの話も含めつつメモとして残しておきます。 最初に断っておきますがWasmにもZigにも特に詳しくないです。 概要 実装 GoWasmランタイム TinyGoのExample ランタイムの初期化 関数の実行 別の渡し方 Zigの実装 malloc free ptrToString stringToPtr 呼び出し側 サンプル まとめ 概要 自分の開発しているOSSでWebAssemblyによるプラグイン機能に対応したのですが*1、Wasmは仕様が小さく関数の引数や戻り値もi32/i64/f32/f64だけで頑張るみたいな世界なので直接ユーザに生のWasm用コードを書いてもらうのは利便性の面で厳しいです。*

    GoのWasmランタイム上でZigで作ったWasmモジュールを動かす - knqyf263's blog