ls but with io_uring

Use natural ordering when sorting #10

merged
opened by knightpp.bsky.social targeting main from knightpp.bsky.social/lsr: use-natord-sorting

The code of natord.zig is a direct translation of https://github.com/sourcefrog/natsort C implementation. To preserve C string handling, Zig implementation injects 0 when reaches end of string. That may be improved to use .len.

Actually, I've also created a Zig package https://codeberg.org/knightpp/natural-ordering-zig, but decided to just copy the code here. If you'd like to make a dependency on my project instead, let me know.

Before

$ ll chapter3/
-rw-r--r-- user user 1.7 KB 21 May 12:43 󰈤 digital-circuits.scm
-rw-r--r-- user user 2.5 KB 21 May 12:43 󰈤 doubly-list.scm
-rw-r--r-- user user 223 B  21 May 12:43 󰈤 exercise3_1.scm
-rw-r--r-- user user 683 B  21 May 12:43 󰈤 exercise3_10.scm
-rw-r--r-- user user 399 B  21 May 12:43 󰈤 exercise3_11.scm
-rw-r--r-- user user 147 B  21 May 12:43 󰈤 exercise3_12.scm
-rw-r--r-- user user 263 B  21 May 12:43 󰈤 exercise3_13.scm
-rw-r--r-- user user 292 B  21 May 12:43 󰈤 exercise3_14.scm
-rw-r--r-- user user 189 B  21 May 12:43 󰈤 exercise3_15.scm
-rw-r--r-- user user 350 B  21 May 12:43 󰈤 exercise3_16.scm
-rw-r--r-- user user 530 B  21 May 12:43 󰈤 exercise3_17.scm
-rw-r--r-- user user 341 B  21 May 12:43 󰈤 exercise3_18.scm
-rw-r--r-- user user 636 B  21 May 12:43 󰈤 exercise3_19.scm
-rw-r--r-- user user 460 B  21 May 12:43 󰈤 exercise3_2.scm
-rw-r--r-- user user 742 B  21 May 12:43 󰈤 exercise3_20.scm
-rw-r--r-- user user 427 B  21 May 12:43 󰈤 exercise3_21.scm
-rw-r--r-- user user 1.1 KB 21 May 12:43 󰈤 exercise3_22.scm
-rw-r--r-- user user 481 B  21 May 12:43 󰈤 exercise3_23.scm
-rw-r--r-- user user 1.5 KB 21 May 12:43 󰈤 exercise3_24.scm
-rw-r--r-- user user 1.3 KB 21 May 12:43 󰈤 exercise3_25.scm
-rw-r--r-- user user 670 B  21 May 12:43 󰈤 exercise3_26.scm
-rw-r--r-- user user 814 B  21 May 12:43 󰈤 exercise3_27.scm
-rw-r--r-- user user 481 B  21 May 12:43 󰈤 exercise3_28.scm
-rw-r--r-- user user 342 B  21 May 12:43 󰈤 exercise3_29.scm
-rw-r--r-- user user 455 B  21 May 12:43 󰈤 exercise3_3.scm
-rw-r--r-- user user 1.1 KB 21 May 12:43 󰈤 exercise3_30.scm
-rw-r--r-- user user 869 B  21 May 12:43 󰈤 exercise3_4.scm
-rw-r--r-- user user 971 B  21 May 12:43 󰈤 exercise3_5.scm
-rw-r--r-- user user 571 B  21 May 12:43 󰈤 exercise3_6.scm
-rw-r--r-- user user 754 B  21 May 12:43 󰈤 exercise3_7.scm
-rw-r--r-- user user 157 B  21 May 12:43 󰈤 exercise3_8.scm
-rw-r--r-- user user 383 B  21 May 12:43 󰈤 exercise3_9.scm
-rw-r--r-- user user 1.0 KB 21 May 12:43 󰈤 queue.scm

After

$ ~/src/forks/lsr/zig-out/bin/lsr -l chapter3/
-rw-r--r-- user user 1.7 KB 21 May 12:43 󰈤 digital-circuits.scm
-rw-r--r-- user user 2.5 KB 21 May 12:43 󰈤 doubly-list.scm
-rw-r--r-- user user 223 B  21 May 12:43 󰈤 exercise3_1.scm
-rw-r--r-- user user 460 B  21 May 12:43 󰈤 exercise3_2.scm
-rw-r--r-- user user 455 B  21 May 12:43 󰈤 exercise3_3.scm
-rw-r--r-- user user 869 B  21 May 12:43 󰈤 exercise3_4.scm
-rw-r--r-- user user 971 B  21 May 12:43 󰈤 exercise3_5.scm
-rw-r--r-- user user 571 B  21 May 12:43 󰈤 exercise3_6.scm
-rw-r--r-- user user 754 B  21 May 12:43 󰈤 exercise3_7.scm
-rw-r--r-- user user 157 B  21 May 12:43 󰈤 exercise3_8.scm
-rw-r--r-- user user 383 B  21 May 12:43 󰈤 exercise3_9.scm
-rw-r--r-- user user 683 B  21 May 12:43 󰈤 exercise3_10.scm
-rw-r--r-- user user 399 B  21 May 12:43 󰈤 exercise3_11.scm
-rw-r--r-- user user 147 B  21 May 12:43 󰈤 exercise3_12.scm
-rw-r--r-- user user 263 B  21 May 12:43 󰈤 exercise3_13.scm
-rw-r--r-- user user 292 B  21 May 12:43 󰈤 exercise3_14.scm
-rw-r--r-- user user 189 B  21 May 12:43 󰈤 exercise3_15.scm
-rw-r--r-- user user 350 B  21 May 12:43 󰈤 exercise3_16.scm
-rw-r--r-- user user 530 B  21 May 12:43 󰈤 exercise3_17.scm
-rw-r--r-- user user 341 B  21 May 12:43 󰈤 exercise3_18.scm
-rw-r--r-- user user 636 B  21 May 12:43 󰈤 exercise3_19.scm
-rw-r--r-- user user 742 B  21 May 12:43 󰈤 exercise3_20.scm
-rw-r--r-- user user 427 B  21 May 12:43 󰈤 exercise3_21.scm
-rw-r--r-- user user 1.1 KB 21 May 12:43 󰈤 exercise3_22.scm
-rw-r--r-- user user 481 B  21 May 12:43 󰈤 exercise3_23.scm
-rw-r--r-- user user 1.5 KB 21 May 12:43 󰈤 exercise3_24.scm
-rw-r--r-- user user 1.3 KB 21 May 12:43 󰈤 exercise3_25.scm
-rw-r--r-- user user 670 B  21 May 12:43 󰈤 exercise3_26.scm
-rw-r--r-- user user 814 B  21 May 12:43 󰈤 exercise3_27.scm
-rw-r--r-- user user 481 B  21 May 12:43 󰈤 exercise3_28.scm
-rw-r--r-- user user 342 B  21 May 12:43 󰈤 exercise3_29.scm
-rw-r--r-- user user 1.1 KB 21 May 12:43 󰈤 exercise3_30.scm
-rw-r--r-- user user 1.0 KB 21 May 12:43 󰈤 queue.scm
0
by knightpp.bsky.social 3 comments
expand 2 commits
Add natord.zig
Use natord in sorting

This is awesome! The only concern I had was that this would reduce perf a little bit, but it is consistently about 5% faster than the previous sorting.

Oh, and re: dependency - I prefer copying such a small dep, so thanks for that!

Wow, merged so quickly! 🎉

pull request successfully merged
sign up or login to add to the discussion
Labels

None yet.

Participants 2
AT URI
at://did:plc:3zsjx5jgd6dbi4orckspsqiq/sh.tangled.repo.pull/3lpocvhvcyc22