Develop, test, run, and bundle JavaScript & TypeScript projects—all with Bun. Bun is an all-in-one JavaScript runtime & toolkit designed for speed, complete with a bundler, test runner, and Node.js-compatible package manager.

Develop, test, run, and bundle JavaScript & TypeScript projects—all with Bun. Bun is an all-in-one JavaScript runtime & toolkit designed for speed, complete with a bundler, test runner, and Node.js-compatible package manager.
興味深い記事を見つけました。 気に入ったところだけピックアップして紹介するので、ぜひ原文も読んでください。 Zig is an ideal language for incrementally porting existing C code to as I’ll hopefully show. Zigは既存のCのコードをインクリメンタルに(少しずつ)移植するのに理想的な言語です。これからそれを紹介します。 Mini-RV32ima Mini-RV32imaはひとつのCのヘッダファイルからなるRISC-Vのエミュレータです。(このエミュレータでLinuxカーネルを起動することが可能です) 私(元のブログの筆者)はRISC-Vのことをあまり知りません。RISC-Vのリファレンスを見るよりもCのコードを一行ずつ忠実にZigに書き直しました。 最初の一歩 zig はCコンパイラとして使うこともでき
まあ、当たり前のことなんですけどね。 前回の記事のプログラムを書き直した 前回の記事のMJPEGからJPEGを切り出すプログラムにはバグがありました。脚注にも書きましたが、それは読み込んだバッファの最後のバイトが0xffで、次のバッファの先頭が0xd9のときに、JPEGの終わりを見逃してしまうというものです。 なので、ちゃんと4つの状態を遷移するように書き直しました。 const std = @import("std"); const fs = std.fs; const io = std.io; const os = std.os; const BUF_SIZE = 64 * 1024; const OUTPUT_FILENAME_PATTERN = "out{d:0>4}.jpg"; const JPEG_START0 = 0xff; const JPEG_START1 = 0xd8;
メモとして残します。 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
序 Zig 言語の標準ライブラリにはジェネリックなキーバリューコンテナが含まれません。 このためZig言語用に Red-Black treeを用いた(当然ジェネリックな)コンテナライブラリ GitHub - eldesh/llrbtree-zig: A container library with llrbtree written in Zig. を実装しました。 順序の付いた値の集合である LLRBTreeSet(T) と、順序の付いたキーに値を紐付ける LLRTTreeMap(K,V) を提供します。 アルゴリズム このライブラリはRed-Black tree(RB tree)の中でもinvariantをより強くした Left-Leaning Red-Black tree(LLRB tree)を実装しています。 RB treeでは 3-node に対応するノードの構成が二つ存在するのに
basis-concept-zig に続いて、Zig 言語のためのイテレータライブラリ iter-zig を作りました。 そこそこ頑張ってReadmeを書いたので詳細はそれを読むことで分かると思います。この記事には書きたいことを書きます(自明)。 Concept イテレータは、値の集合から各要素を高々一度ずつかつ網羅的に列挙するデータ構造のことです*1。 iter-zig ではRustと同じくイテレータコンセプトを以下の条件を満たす型と定めました。 Self: type = @This() 型を持つ Item: type 型を持つ fn next(*Self) ?Item というメソッドを持つ この条件を確認するメタ関数として concept.isIterator: fn (type) bool という関数が用意されています。 comptime assert(!isIterator(u32
Zig 言語用のライブラリ basis-concept を書きましたのでその紹介をします。 > github.com/eldesh/basis_concept 序 Zig は手続き的な型付き言語です。表現力としては、型上のコンパイル時計算によりアドホック多相を表現出来ます。 ただし型コンストラクタや部分特殊化が無いため、型の分類をシステマチックに行うのが面倒になっています。 このライブラリは型上の述語によって基本的な型の分類方法とそれらの上のジェネリックな関数を提供するユーティリティーライブラリです。 Concept このライブラリでは型を分類するための述語をコンセプトと呼びます。主なコンセプトを紹介します。 Eq 等値比較を可能な型です。== で比較でき、かつポインタを含まない型は自動的にこのコンセプトを満たします。eq と ne という関数を持っている型の場合もこのコンセプトを満たしま
Zig is a general-purpose programming language and toolchain for maintaining robust, optimal and reusable software. ⚡ A Simple LanguageFocus on debugging your application rather than debugging your programming language knowledge. No hidden control flow.No hidden memory allocations.No preprocessor, no macros.⚡ ComptimeA fresh approach to metaprogramming based on compile-time code execution and lazy
これは何? Zig を学ぼうと 公式文書 (0.91時点) を読んでいるんだけど、読みながら思ったことを記していく。 続編は Zig の文書読んで所感を記す #2 へ。 その前に Zig への言及が最近多いなぁ、でもシンプルな言語だって言うしまあどうでもいいかなぁ、ぐらいの気持ちでいたんだけど、ZigはCMakeの代替となるか を読んで、俄然興味が湧いてきて、じゃあ読んでみるか、と思った。 数値 i32 とか u16 のような名前で型が提供されている。 整数は 128bit まである。そればかりか、 3bit とか 53bit のような中途半端な幅の整数も使える模様。面白い。 さらに。何に使うのかわかってないけど、 i0 u0 のようなゼロビットの整数もある。 ちなみに0ビット整数には 0 が代入できる。 u1 は、 0 または 1。 i1 は、 0 または -1 が代入可能。 浮動小数点
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く