スレタイ(順番はRedMonk準拠)以外の言語もok
前スレ
次世代言語26 TypeScript Swift Go Kotlin Nim
https://mevius.5ch.net/test/read.cgi/tech/1655771266/ nim 2.2.0 リリース
久しぶりに速度をはかるとかなり高速化されているようだ。
単純なフィボナッチ計算45桁で実測
-d:releaseコンパイルで約26%, -d:dangerで約33%高速化している。
(実際の高速化はこの一つ前のバージョン2.0.10でされている) 実用コードでそこまでの差はないだろうけど
チェックの省略やTCOが上手になったのかな
Cコードで差分とってみてほしい 266です。
nimから出力されたCコードの差分を取った所、違っていた箇所は以下の2点でした。
①メイン処理に入る前のnim側の初期化処理(関数名が変わっている)
②フィボナッチ関数内のresult変数の0初期化
※gccのコンパイルオプションも全く同じ
特に高速化に繋がる変更はなく、なぜ早くなるのか不明でしたが、色々と試して
上記②が原因と分かりました。
nimのresult変数の初期化が入る事で、gcc側のコンパイル最適化で高速化
しているようです。
試しにnim2.0.8でresult変数を0初期化した所、nim2.2.0と同じ処理速度
が出る事が確認できました。
(フィボ関数内の先頭でresult変数を0初期化し、以降の算出値をresult変数に
格納するように変更した) >>266
Nimの場合はバックエンドに使うCコンパイラの最適化能力も実行速度に影響します。Nimのバージョン間の実行速度を比較するときにCコンパイラのバージョンを同じにしていますか?
面倒でなければCコンパイラの出力するアセンブリコードを読むと何故result変数を0初期化することが処理速度に影響するかわかると思います。
--passC:"-S"というコンパイラオプションをNimに渡すとnimcacheディレクトリにアセンブリコードが出力されます。 >Nimの場合はバックエンドに使うCコンパイラの最適化能力も実行速度に影響します。Nimのバージョン間の実行速度を比較するときにCコンパイラのバージョンを同じにしていますか?
当然同じ環境です。choosenimでバージョン切り替えて確認してます。
私の疑問点は解消しましたし、gcc側の最適化内容まで追うつもりはないので、私の方の検証はこれで終了とします。 Zig言語で開発したターミナルエミュレータだってさ
ミッチェル・ハシモト氏の個人開発によるターミナルエミュレータ「Ghostty 1.0」、12月に正式リリース予定。オープンソースとして公開へ
2024年10月25日
https://www.publickey1.jp/blog/24/ghostty_1012.html Crystalとかわりと新しめな言語っぽいけど次世代言語としてはあんま価値はない感じ? 対立煽りに荒らし尽くされて過疎ってるだけだから気にせんと何でも書いてってや やはり、実際に採用されたプロダクトが出てくる頻度で見ると、Zigが頭一つ抜けてるな zigをCコンパイラもどきとして扱うのはよく見るけどzig言語の採用例ってあんまり多くなくない >>277
非同期の仕様が全然決まらないかららしい
本家はLLVMに変わるコンパイラバックエンドに注力してるみたいだけど
そんなことより言語仕様とか標準ライブラリやったほうがいい気はする… >>278
本家は今のCの適用範囲をそのままZigで置換することを目指していて
範囲外にある非同期に関心薄いのはしょうがないのでは Cの適用範囲ってのが残ってるのかちょっと疑問はある
Rust for Linuxの騒動でも感じたけどCにこだわりのある人はC以外に移行しないと思う
移行してもいいって人はすでにRustなりに行ってる可能性高いし
組み込み系は残ってるけど認定コンパイラ必須だからハードル高いし
そもそもユーザ増えないと認定にお金出してくれる会社も現れないんだよな zigは結局メモリ安全じゃないからね
ならcでいいってなるね zigは未使用変数がエラーになるとか今風の言語っぽく厳しい部分もC好きな人には合わなさそう そもそもWebAssemblyをテキスト形式に書きゃいい
わざわざ別言語を挟む必要なし ocamlが癌だよなあ
llvmにすりゃよかったのに
今時コンパイラをセルフホスト出来てないのは厳しい テキスト形式ってWATのことかな?
Component Modelの実装もWATで全部記述するってことだろうけど、つよつよな人だー。 >>289
現状Wasmを使いたくなるケースがJS系より高速な数値計算くらいなんだからテキスト形式で十分
ブラウザゲームのような特殊な用途ではない限り、現行では未だ課題の多いWasmが従来のJS系+Htmlを食らうことはない
Wasmでstdの規格が制定されてWasmファイル容量の大幅削減が実現してからが本番 今時のコンパイラならrust+llvmが鉄板なんじゃないの?
ライブラリも豊富になってきたし >>289
Lispかける人なら余裕だと思うよ
知らんけど Zigは0.14.0がリリースできず2月に先延ばしされました
今回issue残件が脅威の1000件超えのままだけど来月までに選別していつも通り大半を持ち越し
目玉の増分ビルドは正式リリースに届かないっぽいかな
他も根本から書き直しってのが多くて新機能は何が正式に入るのか謎だ >>296
増分ビルドはnightlyでマージ済み zig-0.14.0出たよ!恒例の延期はあったけどね
増分ビルドはテスト不足でデフォルトだと無効になっちゃってるようだ
> this feature is not ready to be enabled by default,
> it can be opted into via the -fincremental flag passed to zig build.
使ってみたいなら -fincremental オプションで明示的にオプトインしてねってことなので
有効化したらメッチャ高速になった…!ええやん! 最後の大物、コルーチンをサポートしてzig 1.0かなぁって予想。 >>229
きりのいいとろこで2030年ごろじゃね? MoonBitでLLVMを再構築するとのこと
> We will rebuild a better LLVM in MoonBit starting this year,
> modern compiler toolchain in a modern language and it will be deveoped in OSS 待望の新言語
jank programming language
https://jank-lang.org/ lisp方言が増える感じなのかな?
clojureは、結構javaのクラスライブラリ呼んでなんとかしてる感じしたので、その点どうなるのかね。 SUSE、Zig言語でSSHの再実装にチャレンジ
https://gihyo.jp/article/2025/11/daily-linux-251119
ZigはCに近いパフォーマンスを出しながらも無駄なオーバーヘッドが少なく、ガベージコレクタをもたずにメモリ管理を手動で行うことから、SSHのような長時間稼働するサービスを効率良く動かせると見られている。 >>309
なんでよりによってSSHをメモリ安全でない言語で? 待望の新言語
愚かな人間の都合など完全無視、LLMのための高効率プログラミング言語「Sui」(粋)
AIが正確に、安く実行できることを最優先
https://forest.watch.impress.co.jp/docs/serial/yajiuma/2069573.html 待望の新言語
コーディングを手伝ってくれるネコが欲しい人のためのプログラミング言語「PURRTRAN」が登場、ちゃんと世話しないと死んでしまうアシスタントキャットと一緒にコーディング
https://gigazine.net/news/20260109-purrtran/ NimだかRustだかのファイル名が_で始まってるとコンパイルもリンクもしてくれない件