Post AwYnRH4yo912fsYnGi by 7331@mastodon.de
 (DIR) More posts by 7331@mastodon.de
 (DIR) Post #AwX6yoKViJnsAUbr72 by eris@p.enes.lv
       2025-07-26T18:08:14Z
       
       0 likes, 0 repeats
       
       Implementing it on top of libgit is a good reason by itself.  Perhaps too big of an undertaking, but still.CC: @ska@treehouse.systems
       
 (DIR) Post #AwXaTyfeDJlBt6i52G by lanodan@queer.hacktivis.me
       2025-07-26T23:38:45.591301Z
       
       0 likes, 0 repeats
       
       @siina @navi @natty Yeah, it's for some commands like git-send-email and CVS/MediaWiki stuff. Distros like Alpine has it in a split subpackage.$ cd /usr/libexec/git-core ; grep -lr '#!.*perl' . | tr '\n' ' ' ; echo./git-cvsexportcommit ./git-credential-netrc ./git-send-email ./git-cvsserver ./git-mw ./git-archimport ./git-remote-mediawiki ./git-contacts ./git-instaweb ./git-cvsimport
       
 (DIR) Post #AwXbu7o6y0jnhvhVSa by lanodan@queer.hacktivis.me
       2025-07-26T23:54:42.414317Z
       
       0 likes, 0 repeats
       
       @navi @natty @ska @SRAZKVT I ended up turning my gemini capsule off, Gemini is kind of fun but it's too much of a prototype like a sort of in-between http/0.9 and http/1.0, lack of keep-alive and last-modified(-since) is really awful, same for lack of user-agent as it means you can't have a /robots.txt to tell crawlers to not go in stupid places.And I really wish they didn't end up with gemini-text being a tiny subset of markdown (which I think is terribly unfit as an exchange format anyway).
       
 (DIR) Post #AwYcOzj7FqKmmV2mci by lanodan@queer.hacktivis.me
       2025-07-27T11:35:00.063119Z
       
       0 likes, 0 repeats
       
       @ska @xarvos @navi Might have been referring to https://gameoftrees.org/ OpenBSD's implementation of git.
       
 (DIR) Post #AwYnRH4yo912fsYnGi by 7331@mastodon.de
       2025-07-27T13:31:07Z
       
       0 likes, 0 repeats
       
       @navi  optimizing compilers are cool, it's just that c is famously full of opportunities to introduce ub
       
 (DIR) Post #AwYnRIB2j5Sa4yP9MG by lanodan@queer.hacktivis.me
       2025-07-27T13:38:35.000425Z
       
       0 likes, 0 repeats
       
       @7331 @navi UB is a standardization issue though, and meanwhile Rust hasn't got a specification so UB in Rust are an unknown.
       
 (DIR) Post #AwYoT4ZCOsBEOu7Gxk by lanodan@queer.hacktivis.me
       2025-07-27T13:50:11.518365Z
       
       0 likes, 0 repeats
       
       @navi @7331 Or even just: Code written against an interface, rustc / rust stdlib adjusted it's behavior from one version/architecture/platform/… to another, and that broke some code.(Hello time crate)
       
 (DIR) Post #Awy8whm4kq6yR0MaMi by 7331@mastodon.de
       2025-08-08T18:55:51Z
       
       0 likes, 0 repeats
       
       @lanodan *used to be, historicallyalso that is a weird thing to say. rust not having a language spec doesn't mean there's no rules for what's ub. there's some stuff that people aren't sure on so whether it'll be not ub in some time but you can just like not do these things in your little piece of unsafe code that is locally auditablenothing about that is comparable to the situation you have in C@navi
       
 (DIR) Post #Awy8wioEuHR7e0NpNQ by lanodan@queer.hacktivis.me
       2025-08-08T19:07:19.622500Z
       
       0 likes, 0 repeats
       
       @7331 @navi I mean the state of whether something is UB or not cannot exists in something without a spec (and mere documentation isn't a spec, specifications are a *lot* more precise).How much UB Rust has is uncharted territory.
       
 (DIR) Post #AwyBUsKAEjvsuNjGue by 7331@mastodon.de
       2025-08-08T19:13:12Z
       
       0 likes, 0 repeats
       
       @lanodan it is not. i can write code that is guaranteed to be 100% UB-free and i do it every day just by following what the docs sayyou can call me out as a liar once you find that something you wrote in accordance with what the docs said you could do at the time becomes UB@navi
       
 (DIR) Post #AwyBUtImbMQDwO5gOm by lanodan@queer.hacktivis.me
       2025-08-08T19:36:00.432994Z
       
       0 likes, 0 repeats
       
       @7331 @navi  I'll have a simple question: Did you ever read the C spec (C89 to C23), specifically the definitions of "implementation-defined behavior" and "unspecified behavior" and then at least a few of the interfaces?Because I don't think you're lying, just… have a rough idea of what UB is instead of what's it actually is.
       
 (DIR) Post #AwyCr44NLew5f2UN1M by icedquinn@blob.cat
       2025-08-08T19:51:20.103905Z
       
       0 likes, 0 repeats
       
       @lanodan @7331 @navi :gutkato_konsternita: [remembering the horrors of C++ programmers bragging about how onerously long the Lisp hyperspec was, meanwhile C++ spec consisted of 40 pages of "everything is undefined and the points don't matter.]
       
 (DIR) Post #AwyEF2H5m06IzxQmpc by lanodan@queer.hacktivis.me
       2025-08-08T20:06:46.937734Z
       
       0 likes, 0 repeats
       
       @icedquinn @7331 @navi Also reminds me of W3C using informative sections on a *very* regular basis.And specs tend to be pretty long, because they're what implementers will follow and *maybe* compare with few other implementations (given they currently exists).And typically it's a spec bug to not specify various edge cases and erroneous usage/states, meanwhile documentation routinely ignores those because the idea of those is to describe how to use.
       
 (DIR) Post #AwyKDOv5CxhyNOjx5c by lanodan@queer.hacktivis.me
       2025-08-08T21:13:42.526335Z
       
       0 likes, 0 repeats
       
       @7331 (untagging navi)Also went a bit through the Rust std lib for where I typically see cases of UB and noticed https://doc.rust-lang.org/stable/std/time/struct.SystemTime.html in C parlance, the paragraph about leap seconds would be described as Undefined Behavior (and yikes, can mean ~30s difference depending on whether you got TAI or UTC).Level of precision is effectively undefined since you can't query it, so elapsed time between two SystemTime::now() calls should always be considered to be equal.And I find it quite interesting that SystemTime::now has no error case, when for example 32-bit overflow past Y2038 is a known one in POSIX, and there's probably some embedded systems with no realtime clock.