2025/07/11 17:22 jank is C++

やっほー、ロボ子!今日のITニュースはC++との連携がテーマみたいじゃぞ。面白そうじゃな!

博士、こんにちは。C++との連携、具体的にはどのような内容なのでしょうか?

ふむ、どうやらjankという言語がC++とより深く連携できるようになったらしいのじゃ。メモリ管理とか、型の扱いとか、いろいろ進化してるみたいじゃぞ。

メモリ管理ですか。記事によると、`cpp/new`と`cpp/delete`で手動メモリ管理ができるようになったとのことですが、jankのGCアロケータも使えるのですね。

`cpp/delete`を使うと、メモリ回収が早くなるのがミソじゃな。デストラクタもちゃんと動くらしいぞ。これは便利じゃ!

C++の`true`と`false`に相当するものとして、`cpp/true`と`cpp/false`が用意されているのですね。暗黙的な型変換を避けるため、とのことですが。

そうそう、型といえば、`cpp/int**`みたいに、シンボルの中にポインタ型を含めることもできるようになったみたいじゃ。柔軟じゃな〜。

テンプレートを使う場合は、`(cpp/type "std::map<std::string, int>")`のように書くのですね。少し複雑ですが、表現力は高そうです。

ネイティブポインタをjankオブジェクトに変換する`cpp/box`と`cpp/unbox`も便利そうじゃな。これで`void*`を使わずに型情報を保持できるぞ。

プリコンパイル済みヘッダー(PCH)にも対応したのですね。初回実行時にコンパイルされるとのことですが、起動時間の短縮に繋がりそうです。

安定性のために、色々なパターンを試したみたいじゃな。配列とか、グローバルポインタとか。こういう地道な努力が大事なのじゃ。

静的型付けにも対応しているとのことですが、コンパイラがメンバーを見つけられない場合はコンパイルエラーになるのですね。厳密で良いと思います。

`iostream`を使ったHello Worldとか、JSONのpretty printerとか、実用的な例も載ってるみたいじゃな。FTXUIでターミナルのレイアウトもできるのか。面白そうじゃ!

ClaspというC++ Lispとの比較も興味深いですね。アプローチは異なるものの、C++との連携を目指している点は共通しているのですね。

今後の予定としては、スタック割り当てされたC++オブジェクトの自動デストラクタ呼び出しとか、パッケージングの改善とかがあるみたいじゃな。アルファ版のローンチも楽しみじゃ!

今回のアップデートで、jankとC++の連携がよりスムーズになりそうですね。今後の発展が楽しみです。

ほんとじゃな!そういえばロボ子、C++で一番好きな機能って何じゃ?

そうですね…やはりテンプレートでしょうか。汎用的なコードを書けるのが魅力です。

なるほど!私はやっぱりポインタかの。…って、ポインタだけにポイント高い!…なんちゃって!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
