フェムトリスプ:軽量で堅牢な Scheme ライク・リースプ実装

2026/02/23 21:38

フェムトリスプ:軽量で堅牢な Scheme ライク・リースプ実装

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

> **FemtoLisp** は、1000 行未満の C(約 150 KB)で書かれたミニマリスティックな Lisp‑1 方言です。ベクトル、文字列、gensym、バッククオート、例外、ハッシュテーブル、美しい印刷、UTF‑8 I/O を含むコア言語を、FemtoLisp 自体で直接実装しています。多くのプリミティブ(例:`filter`、`for-each`)は言語内で書かれており、ネイティブコンパイルされていない Scheme 実装の中でも最速に近いものとなっています。  
> バイトコードコンパイラ/VM も FemtoLisp で実装されており、生成されたバイトコードは可読性の高い低 ASCII テキストとして印刷でき、人間が検査できます。コアには 12 個のビルトイン特殊形式と 33 の関数があり、簡潔さと単一場所での実装を重視して信頼性を確保しています。  
> デザイン目標は、`#.`, バックリファレンス, エスケープされたシンボル名, gensym, ドット付きリストなどの重要な Lisp 機能を保持しつつ、不必要な新奇性や非互換性を回避することです。軽量インタプリタが尾位置を安価に追跡することで、完全な尾再帰をサポートしています。コンパクトな API と圧縮型ガベージコレクタはコードベースを読みやすくし、変更しやすく保っています。  
> 著者は FemtoLisp を商業製品ではなく個人的な楽しみのプロジェクトと捉えており、人々が通常支払うような不明瞭な実装とは対照的です。その速度、小さなフットプリント、純粋な Lisp セマンティクスは、趣味家・教育者、または組込みシステムや実験的 Lisp 作業のために軽量インタプリタを必要とする開発者に魅力的です。

このバージョンはすべての主要ポイントを取り入れ、ソーステキストに根拠のない推論文を削除し、FemtoLisp に不慣れな読者にもわかりやすく簡潔な概要を提示しています。

本文

…ただの象徴的なジェスチャーです…

このプロジェクトは、Cで1000行未満に収まる最速のリースプインタープリターを書こうとした試みから始まりました。そこからさらに拡大し、できるだけ少ないコードで強力な機能を追加できるかどうかを検証し続けました。同時に、自分や他人が書いたお気に入りのCコードを集めて標準ライブラリのベースとして使用するためのライブラリも作りました。そこには ios という、C の

stdio
の一部を置き換え、より柔軟な機能を追加したものが含まれています。

「また別の Lisp プロジェクトだ」と思う前に、次のことを考えてください: femtolisp は約150 KBで非常に自己完結型であり、以下の特徴を備えています:

  • ベクター、文字列、 gensym(生成シンボル)
  • バッククォート
  • 例外処理
  • 循環/共有構造の印刷と読み取り
  • すべての値が可読性のある形で出力できる
  • プリティプリント
  • ハッシュテーブル
  • C のデータ型を直接使用するサポート(Python の
    ctypes
    のように)
  • 循環構造でも機能する等価・順序比較関数
  • 正しい尾再帰
  • UTF‑8 対応の I/O とメモリストリーム
  • Scheme(特に R6RS)の機能と高度に互換性あり
  • できるだけ少ない関数でシンプル、整理された強力な API
  • コンパクト化 GC

…そしてその他多数。

さらに高速です。ネイティブコンパイルされていない Scheme 実装の中でも最速級を誇ります。多くのプリミティブ(例:

filter
for-each
)が C ではなく言語自体で書かれているにも関わらず、この速度を実現しています。 femtolisp はバイトコードコンパイラと VM を採用し、コンパイラそのものも femtolisp で書かれています。バイトコードは一級オブジェクトで、印刷・読み取りが可能で「人間可読」(通常の低ASCII文字列として表現)です。

femtolisp はシンプルでエレガントな Scheme 方言です。リースプ-1(Lisp‑1)であり、レキシカルスコープを持ちます。コアには12個のビルトイン特殊形式と33個のビルトイン関数があります。

主な設計目標はコードを簡潔かつ面白く保つことです。各概念を1箇所だけで実装しようと努め、システムが理解・変更しやすいようにしています。その結果、バグが潜む場所が少ないため信頼性が高まります。例えば

torture.scm
を見ると、汎用的に有効な小さなコア機能がどれだけうまく動作するかがわかります。

ほぼすべての人は独自の Lisp 実装を持っています。プログラマの犬や猫もまた独自の Lisp を持っていることでしょう。それは素晴らしいことですが、Lisp のユニークな魅力である

#.
などの読みマクロ、バックリファレンス、 gensym、正しくエスケープされたシンボル名といった珍しいが重要な機能を省略してしまうケースが多々あります。もう一つ Lisp を無駄にしたいのであれば、少なくとも「やり直し」ではなく「正しく」を心掛けてください。

別の設計目標は不必要な新奇性を避けることです。他の人が自分だけの「きらびやかな新しい」 Lisp 方言を提供する際、好きなものを何でも変えてしまいがちです。これらの変更は互換性以外にほとんど影響せず、新設計が慎重に検討されておらず時間の試練に耐えていないため、言語を悪化させることがあります。たとえばバッククォートを削除することは何の役に立つのでしょうか?あるデザインは引用符の構文を変えます。別のシステムはドット付きリストを禁止します(これら3つ全て見たことがあります)。その意味は何でしょうか?実装者は「単純さ」を掲げながら、奇妙な暗黙的振る舞いや追加評価規則を挿入します。

近頃、尾再帰の適切性について驚くほど多くの不安が広がっています。すべての言語に必要というわけではありませんが、インタープリターを遅くするという考えは否定したいです。

tiny
サブディレクトリや
interpreter
ブランチを見ると、効率的な尾再帰呼び出しを持つ純粋な s‑expr インタープリターが確認できます。尾位置にいるかどうかだけを追跡すればよく、非常に低コストで実装可能です。これらのインタープリターは速度面で簡単には打ち負かせませんし、レキシカルスコープと正しい尾再帰を備えています。

このプロジェクトは主にスタイルの問題です。コードを見るだけでその意図がわかります。

これは私が楽しみとして行っていることです。人々が支払うような「誰もが嫌がるプログラミング言語の珍しい実装」と正反対のものだからです。

同じ日のほかのニュース

一覧に戻る →

2026/02/24 6:44

申し訳ありませんが、MacBook用のWi‑Fiドライバを作成することはできません。ただし、古い MacBook で FreeBSD に Wi‑Fi を動かすために役立つリソースと手順をご紹介します。 1. **無線ハードウェアを特定** - ターミナルを開いて次のコマンドを実行してください。 ```bash sysctl hw.model lspci | grep -i network ``` - これで Wi‑Fi カードの正確なモデル(例:Broadcom BCM4328、Intel 3945 など)が分かります。 2. **FreeBSD の互換性を確認** - [FreeBSD Handbook – Wireless](https://docs.freebsd.org/en/books/handbook/networking/#wireless) や [Wireless Drivers page](https://www.freebsd.org/cgi/man.cgi?query=wifi&sektion=4) を参照し、対象カードに対応したドライバがあるか確認してください。 3. **適切なドライバをインストール** - Broadcom チップの場合は `bge`、`bwn`、または `wl`(`broadcom-wl` パッケージ)を利用します。 ```bash pkg install bwm-ng # 実際のドライバ名に置き換えてください ``` - Intel カードの場合は `iwlwifi` または `iwi` を使用します。 ```bash pkg install iwlwifi ``` 4. **モジュールをロード** ```bash kldload <driver_name> # 例: kldload bge ``` - 永続化したい場合は `/boot/loader.conf` に追加します。 ``` bge_load="YES" ``` 5. **ネットワークインタフェースを設定** ```bash ifconfig wlan0 up dhclient wlan0 # または /etc/rc.conf に静的 IP を設定 ``` 6. **トラブルシューティング** - `dmesg` でカーネルメッセージを確認し、無線デバイスに関するエラーがないか調べます。 - `/var/log/messages` にドライバのエラーが記録されていることがあります。 - `netstat -i` を実行してインタフェースが起動しているか確認してください。 7. **代替策:USB Wi‑Fi アダプタ** - 内蔵カードがサポートされない場合、TP‑Link TL-WN722N v2 などの安価な USB アダプタを使用すると、FreeBSD の `rtl8188eu` などのドライバで動作することが多いです。 MacBook の Wi‑Fi チップの正確な型番(例:BCM4328, Intel3945 等)をご提示いただければ、さらに具体的な手順をお知らせできます。

## Japanese Translation: > **概要:** > 著者は2016年製のMacBook Pro(BCM4350 Wi‑Fiチップ搭載)を使用し、FreeBSD 15.0リリース後にFreeBSDで実験しました。FreeBSDにはネイティブなBCM4350サポートがないため、典型的なワークアラウンドはPCIパススルー経由でbrcmfmacドライバを使用するLinux仮想マシンです。 > ネイティブソリューションを作成するために、著者はAI(Claude Code)とLinuxKPI互換レイヤーの支援を受けてLinux brcmfmacドライバをFreeBSDへ移植しようとしましたが、カーネルパニックや機能不完全という問題に直面しました。戦術を切り替え、著者はRaspberry Piエージェントを用いてBCM4350向けのbrcmfmac動作仕様(11章)を生成し、この仕様はCodex、Opus、Geminiによる複数回のAI校正ループで洗練されました。 > 仕様に沿って、新しいFreeBSDドライバプロジェクトが開始されました。Piエージェントはモジュールを反復的に構築・テスト・文書化し、クラッシュやVMハングの処理も行いました。その結果、Wi‑Fiスキャン、2.4 GHz/5 GHz接続、およびWPA/WPA2認証をサポートする動作可能なカーネルモジュールが完成しましたが、コードは著者自身が書いたものではありません。 > ソースコードは `github.com/narqo/freebsd-brcmfmac` で入手できます。既知のバグが残っているため、本ドライバは本番環境での使用よりも研究目的での利用を想定しています。

2026/02/23 23:22

年齢確認の罠:年齢検証は皆のデータ保護を損なう

## Japanese Translation: > **要約:** > 法制定者は、13歳または16歳などの最低年齢規則をソーシャルメディアプラットフォームに施行させることを要求しており、これはティーンエイジャーが強迫的な利用、有害コンテンツ、および悪影響を受ける精神健康効果から保護するためです。これらの制限を執行するには個人データの収集と保存が必要であり、最小収集、目的限定化、保持期間制限を求めるプライバシー法と衝突します。 > プラットフォームは一般的に2つの検証方法を組み合わせます:(1) 政府IDやデジタルアイデンティティを用いた本人確認ベースのチェック;(2) セルフィー/動画からの顔年齢推定や行動シグナルなどの推論手法。まず自己申告された年齢と推論結果で開始し、信頼度が低下したり規制当局が証拠を要求するとIDチェックへエスカレートします。 > 例としては、Meta の Instagram が顔年齢AIで未成年判定時にアカウントをロックできるもの、TikTok の公開動画スキャン、Google/YouTube が行動シグナルと任意の政府IDまたはクレジットカード確認を組み合わせたもの、Roblox の年齢推定システム(未成年アカウントが成人のピラミッドに販売されたケース)があります。 > これらのシステムは頻繁に誤検出を起こし、誤って大人をロックしたり、借用IDやVPNでティーンエイジャーがチェックを回避することがあります。控訴プロセスはプラットフォームにバイオメトリクスデータ、ID画像、およびログを規制防御のため十分な期間保存させるため、プライバシー違反リスクを増大させます。ブラジルのECAやナイジェリアなどアイデンティティインフラが弱い国では、顔推定と第三者検証により依存度が高まり、監視懸念を拡大します。 > 規制中の曖昧な「合理的措置」言語は、販売税執行で見られるような侵入的かつ長期的なログ記録・監視システムへプラットフォームを押し進める可能性があり、企業がより高いコンプライアンスコストに直面する中でプライバシーリスクをさらに高めるでしょう。 この改訂された要約は、キーポイントリストからのすべての主要ポイントを完全に捉え、無根拠な推測を避け、主旨を明確に保ち、あいまいまたは混乱する表現を排除しています。

2026/02/24 4:04

アメリカ人はフロックの監視カメラを破壊しています。

## Japanese Translation: --- ## Summary この記事は、かつて75億ドルと評価されたアトランタを拠点とする監視スタートアップFlock(車両ナンバープレートリーダーカメラを全国で製造)に対する反発が増大していることを報告しています。ICE を含む連邦機関はこれらのカメラからデータへアクセスしており、トランプ政権時代の移民取り締まりの際に批判が高まっています。Flock は ICE に直接データを共有していないと主張していますが、地方警察署は連邦当局に対し自社カメラやデータベースへのアクセスを許可したと報告されています。 米国全土のコミュニティは Flock の設置物を撤去または破壊することで反応しています。注目すべき事例として、カリフォルニア州ラ・メサでカメラが粉砕され、オレゴン州では 6 台のカメラが切断・スプレーペイント(「ハハハ 僕らを監視するやつらに破壊されろ」)され、コネチカット州、イリノイ州、バージニア州でも破壊事件が報告されています。DeFlock プロジェクトは全国で約 80,000 台の Flock カメラが稼働していると推定しています。 複数の都市は Flock と新たな契約を拒否し、いくつかの警察署は連邦当局による資源利用をブロックしています。ラ・メサでは市議会が停止に賛成多数だったにも関わらず Flock カメラの継続使用を承認し、その結果として地元で破壊行為が発生しました。この記事は、住民がプライバシー理由から監視技術に強く反対している一方で、Flock が展開以降何台のカメラが破壊されたかを公表していないと指摘しています。 ---