次世代言語27 Nim Zig Pony Carbon Gleam

2024/10/02(水) 13:03:50.53ID:XbzwGALZa
RustがNimより速い訳がない
266デフォルトの名無しさん (ワッチョイ ffad-4whB)
垢版 |
2024/10/03(木) 12:29:21.43ID:gQlcDFcc0
nim 2.2.0 リリース
久しぶりに速度をはかるとかなり高速化されているようだ。
単純なフィボナッチ計算45桁で実測
-d:releaseコンパイルで約26%, -d:dangerで約33%高速化している。
(実際の高速化はこの一つ前のバージョン2.0.10でされている)
2024/10/03(木) 13:32:37.43ID:/N1KY/IS0
実用コードでそこまでの差はないだろうけど
チェックの省略やTCOが上手になったのかな
Cコードで差分とってみてほしい
268デフォルトの名無しさん (ワッチョイ ffad-4whB)
垢版 |
2024/10/05(土) 02:05:54.37ID:dycfQkyl0
266です。

nimから出力されたCコードの差分を取った所、違っていた箇所は以下の2点でした。
@メイン処理に入る前のnim側の初期化処理(関数名が変わっている)
Aフィボナッチ関数内のresult変数の0初期化
※gccのコンパイルオプションも全く同じ

特に高速化に繋がる変更はなく、なぜ早くなるのか不明でしたが、色々と試して
上記Aが原因と分かりました。

nimのresult変数の初期化が入る事で、gcc側のコンパイル最適化で高速化
しているようです。
試しにnim2.0.8でresult変数を0初期化した所、nim2.2.0と同じ処理速度
が出る事が確認できました。
(フィボ関数内の先頭でresult変数を0初期化し、以降の算出値をresult変数に
格納するように変更した)
2024/10/05(土) 14:35:02.61ID:tOSXTi2h0
>>266
Nimの場合はバックエンドに使うCコンパイラの最適化能力も実行速度に影響します。Nimのバージョン間の実行速度を比較するときにCコンパイラのバージョンを同じにしていますか?
面倒でなければCコンパイラの出力するアセンブリコードを読むと何故result変数を0初期化することが処理速度に影響するかわかると思います。
--passC:"-S"というコンパイラオプションをNimに渡すとnimcacheディレクトリにアセンブリコードが出力されます。
270デフォルトの名無しさん (ワッチョイ caad-6k2q)
垢版 |
2024/10/06(日) 13:25:29.22ID:yuNPVtUj0
>Nimの場合はバックエンドに使うCコンパイラの最適化能力も実行速度に影響します。Nimのバージョン間の実行速度を比較するときにCコンパイラのバージョンを同じにしていますか?

当然同じ環境です。choosenimでバージョン切り替えて確認してます。

私の疑問点は解消しましたし、gcc側の最適化内容まで追うつもりはないので、私の方の検証はこれで終了とします。
2024/10/26(土) 14:10:58.86ID:lE9emaTH0
Zig言語で開発したターミナルエミュレータだってさ

ミッチェル・ハシモト氏の個人開発によるターミナルエミュレータ「Ghostty 1.0」、12月に正式リリース予定。オープンソースとして公開へ
2024年10月25日
https://www.publickey1.jp/blog/24/ghostty_1012.html
2024/11/29(金) 13:35:59.12ID:cbzvCkJwd
Crystalとかわりと新しめな言語っぽいけど次世代言語としてはあんま価値はない感じ?
2024/11/29(金) 14:06:07.15ID:kgssLEYJ0
対立煽りに荒らし尽くされて過疎ってるだけだから気にせんと何でも書いてってや
2024/11/29(金) 18:48:03.79ID:KH+D4ATv0
やはり、実際に採用されたプロダクトが出てくる頻度で見ると、Zigが頭一つ抜けてるな
275デフォルトの名無しさん (ワッチョイ 6208-Dngz)
垢版 |
2024/12/03(火) 00:07:23.29ID:SdCS4Rrb0
zigをCコンパイラもどきとして扱うのはよく見るけどzig言語の採用例ってあんまり多くなくない
2024/12/03(火) 06:50:16.97ID:hGt3IOpB0
時雨堂もZig撤退しちゃったしなぁ
2024/12/03(火) 07:04:26.37ID:JOdYPQk60
>>276
マジかよ
それはショックだな
2024/12/03(火) 07:13:55.18ID:hGt3IOpB0
>>277
非同期の仕様が全然決まらないかららしい
本家はLLVMに変わるコンパイラバックエンドに注力してるみたいだけど
そんなことより言語仕様とか標準ライブラリやったほうがいい気はする…
2024/12/03(火) 07:40:52.23ID:JOdYPQk60
>>278
本家は今のCの適用範囲をそのままZigで置換することを目指していて
範囲外にある非同期に関心薄いのはしょうがないのでは
2024/12/03(火) 08:12:12.79ID:13VhrJJT0
Cの適用範囲ってのが残ってるのかちょっと疑問はある
Rust for Linuxの騒動でも感じたけどCにこだわりのある人はC以外に移行しないと思う
移行してもいいって人はすでにRustなりに行ってる可能性高いし

組み込み系は残ってるけど認定コンパイラ必須だからハードル高いし
そもそもユーザ増えないと認定にお金出してくれる会社も現れないんだよな
281デフォルトの名無しさん (ワッチョイ a64d-5eKh)
垢版 |
2024/12/03(火) 21:49:17.45ID:FXu9rGH00
zigは結局メモリ安全じゃないからね
ならcでいいってなるね
2024/12/03(火) 23:16:36.04ID:hGt3IOpB0
zigは未使用変数がエラーになるとか今風の言語っぽく厳しい部分もC好きな人には合わなさそう
2024/12/24(火) 09:41:20.41ID:Q1P/mCXL0
待望の新言語

WebAssemblyに特化した言語「MoonBit」のコンパイラがGitHubで公開
https://www.publickey1.jp/blog/24/webassemblymoonbitgithub.html
2024/12/27(金) 17:23:49.87ID:G1CfTzeH0
記述言語OCamlじゃん‥
285デフォルトの名無しさん (ワッチョイ bbab-XATa)
垢版 |
2024/12/27(金) 17:30:07.17ID:ETOuh+5m0
Haxeを想起させる
2024/12/28(土) 18:36:13.79ID:6/sbywh9p
今更言語特有の変な記号とか覚えたく、ない
2024/12/28(土) 18:41:10.43ID:TMKvqX8o0
そもそもWebAssemblyをテキスト形式に書きゃいい
わざわざ別言語を挟む必要なし
288デフォルトの名無しさん (ワッチョイ bbd6-XATa)
垢版 |
2024/12/28(土) 20:01:23.85ID:BjukJolw0
ocamlが癌だよなあ
llvmにすりゃよかったのに
今時コンパイラをセルフホスト出来てないのは厳しい
2024/12/29(日) 00:15:57.27ID:iFrxiC4m0
テキスト形式ってWATのことかな?
Component Modelの実装もWATで全部記述するってことだろうけど、つよつよな人だー。
2024/12/29(日) 10:54:43.90ID:xYvb8s8e0
>>289
現状Wasmを使いたくなるケースがJS系より高速な数値計算くらいなんだからテキスト形式で十分
ブラウザゲームのような特殊な用途ではない限り、現行では未だ課題の多いWasmが従来のJS系+Htmlを食らうことはない
Wasmでstdの規格が制定されてWasmファイル容量の大幅削減が実現してからが本番
291デフォルトの名無しさん (ワッチョイ 1a45-Nl0t)
垢版 |
2024/12/29(日) 11:34:20.33ID:+BdQ0YDt0
https://x.com/bobzhang1988/status/1866342498421096448
一応llvmで書き直す構想はあるみたいだ
2024/12/29(日) 14:55:32.92ID:uE2S0Bjb0
今時のコンパイラならrust+llvmが鉄板なんじゃないの?
ライブラリも豊富になってきたし
2024/12/29(日) 14:58:20.96ID:uE2S0Bjb0
>>289
Lispかける人なら余裕だと思うよ
知らんけど
294デフォルトの名無しさん (ワッチョイ 3e0f-8EYK)
垢版 |
2025/01/03(金) 03:33:14.60ID:REb2C/h00
Perlの$%@は良かった
295デフォルトの名無しさん (アウアウエー Sa23-Y8TR)
垢版 |
2025/01/05(日) 10:08:03.18ID:8kdOFrcZa
そう思える人はRubyも好きなはず
2025/01/19(日) 19:22:00.79ID:zgJXkwkZ0
Zigは0.14.0がリリースできず2月に先延ばしされました
今回issue残件が脅威の1000件超えのままだけど来月までに選別していつも通り大半を持ち越し

目玉の増分ビルドは正式リリースに届かないっぽいかな
他も根本から書き直しってのが多くて新機能は何が正式に入るのか謎だ
2025/01/20(月) 07:55:51.51ID:/rx6KXgc0
>>296
増分ビルドはnightlyでマージ済み
2025/03/06(木) 15:04:34.42ID:Y61FoeXm0
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 オプションで明示的にオプトインしてねってことなので
有効化したらメッチャ高速になった…!ええやん!
2025/03/06(木) 19:12:13.02ID:l4jw4h0Z0
Zig 1.0はいつ出るの?
2025/03/06(木) 19:46:33.97ID:38v8ReeR0
最後の大物、コルーチンをサポートしてzig 1.0かなぁって予想。
301デフォルトの名無しさん (ワッチョイ 454b-bZOK)
垢版 |
2025/03/24(月) 18:22:12.85ID:mpEtAgOm0
>>229
きりのいいとろこで2030年ごろじゃね?
302デフォルトの名無しさん (ワッチョイ c269-JIbt)
垢版 |
2025/03/24(月) 22:03:16.05ID:+P7EWERr0
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
2025/03/25(火) 13:53:04.66ID:z+9Q790S0
>>302
は?別にそこはいいじゃん
2025/05/20(火) 08:58:30.48ID:wvxe5xAp0
待望の新言語

魔法陣のようなプログラミング言語「Mystical」
https://gigazine.net/news/20250519-mystical/
305デフォルトの名無しさん (ワッチョイ 4f54-gGGB)
垢版 |
2025/05/21(水) 05:37:24.48ID:tVhMy6rt0
元はforthかな
2025/07/13(日) 21:25:38.68ID:ttim25hJ0
待望の新言語

jank programming language
https://jank-lang.org/
2025/07/14(月) 13:40:56.77ID:qata7TEE0
lisp方言が増える感じなのかな?
clojureは、結構javaのクラスライブラリ呼んでなんとかしてる感じしたので、その点どうなるのかね。
2025/07/17(木) 12:44:48.46ID:TY8Q4fcO0
Unison 言語から、「次」の言語を考察したい
https://zenn.dev/mizchi/articles/think-next-language-with-unison
2025/11/20(木) 09:14:17.78ID:QY1RnXH90
SUSE⁠⁠、Zig言語でSSHの再実装にチャレンジ
https://gihyo.jp/article/2025/11/daily-linux-251119

ZigはCに近いパフォーマンスを出しながらも無駄なオーバーヘッドが少なく、ガベージコレクタをもたずにメモリ管理を手動で行うことから、SSHのような長時間稼働するサービスを効率良く動かせると見られている。
2025/11/20(木) 16:30:37.91ID:ncYlBBwT0
>>309
なんでよりによってSSHをメモリ安全でない言語で?
2025/11/20(木) 17:09:22.39ID:E1SPcZchM
いわゆるハッカソンでしょ
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。