funny how nothing good is liscenced under the gpl
Reply to @[email protected]
Reply to @[email protected]
@pasture@pl.gamers.exposed @georgia@netzsphaere.xyz reliscensing doesn't count, anything free could be gpl'd under that logic
Reply to @[email protected]
@pasture@pl.gamers.exposed @georgia@netzsphaere.xyz or its permissively liscenced, which is what good projects are
Reply to @[email protected]
@pernia@freespeechextremist.com @georgia@netzsphaere.xyz what? yeah, anything can gpl'd if the owner decides to make it gpl.
@pasture@pl.gamers.exposed @georgia@netzsphaere.xyz its a shit liescence, and projects with half a brain avoid it for a reason
Reply to @[email protected]
@pernia@freespeechextremist.com @georgia@netzsphaere.xyz what does this have to do with "no good software is licensed under the gpl", georgia and I gave you examples
Reply to @[email protected]
@pernia@freespeechextremist.com @georgia@netzsphaere.xyz so doom and pleroma are projects without half a brain
@pasture@pl.gamers.exposed @georgia@netzsphaere.xyz doom doesn't count. i guess i'm refering to linux and gnu more than anything
@meowski@fluf.club @georgia@netzsphaere.xyz @pasture@pl.gamers.exposed they are shit. its cool that stallman wanted to make software free an available, but compared to other coreutils gnu is garbage
woodland creature
Reply to @[email protected]
@pernia@freespeechextremist.com @pasture@pl.gamers.exposed @georgia@netzsphaere.xyz gnu coreutils is pretty useful. you might want to rethink this
woodland creature
Reply to @[email protected]
@pernia@freespeechextremist.com @georgia@netzsphaere.xyz @pasture@pl.gamers.exposed they seem to work pretty well and are the most widely distributed. so idk you got a better bundle of core utils?
Reply to @[email protected]
@meowski@fluf.club @pernia@freespeechextremist.com @georgia@netzsphaere.xyz @pasture@pl.gamers.exposed aah, nobody mentioned gcc? More than half of the software wouldn't exist without gcc (assuming those devs wouldn't use TurboC or msvc)
rdr@[email protected] @georgia@netzsphaere.xyz @meowski@fluf.club @p@freespeechextremist.com [email protected]@[email protected] @user@freespeechextremist.com it FUCKS UP YOUR CODE TO THE POINT WHERE YOU HAVE TO ACCOUNT FOR IT. that's the difference between a cumpiler and a coompiler. cumpilers optimize, coompilers ooptimize
Reply to @[email protected]
@pernia@freespeechextremist.com @user@freespeechextremist.com @georgia@netzsphaere.xyz @meowski@fluf.club @pasture@pl.gamers.exposed Yeah, it even changes function calls and then changes string constants to fit the new calls. It's ridiculous.
Reply to @[email protected]
@meowski@fluf.club @pernia@freespeechextremist.com @georgia@netzsphaere.xyz @pasture@pl.gamers.exposed @rdr@posting.lolicon.rocks @user@freespeechextremist.com gcc takes some excessive liberties. As far as I'm concerned, swapping out function calls by relying on knowledge about the stdlib (the way I found out it was doing this was it changed a printf() to a puts(), but it does this with a lot of libc functions) is way over the line.
Reply to @[email protected]
Reply to @[email protected]
@user@freespeechextremist.com @georgia@netzsphaere.xyz @meowski@fluf.club @pasture@pl.gamers.exposed @pernia@freespeechextremist.com > Tf? It's got to alter the string constant in order to cut the newline off so that it can use puts() instead of printf(): echo '#include int main(int argc, char **argv) {printf("Hello, World!\n");return 0;} '>/tmp/hello.c && gcc -O3 -S -o /tmp/hello.s /tmp/hello.c && grep Hello /tmp/hello.s # This prints '.string "Hello, World!"' rather than '.string "Hello, World!\n"'. It's different behavior, so it's not an optimization any more.
Social Justice Wizard
Reply to @[email protected]
@p@freespeechextremist.com The produced executable does not behave differently when run. You're using a wonky definition of "changes behaviour" that looks into implementation details. A process in a UNIX environment should be seen as a blackbox with the following inputs and outputs: In: - Argument vector - Environment variables - Standard input port Out: - Standard output port - Standard error port - Exit code Plus of course it can open further ports, or cause side effects on the environment such as affecting the filesystem or spawning new processes. The functions in the C and POSIX standards aid in ultimately producing this blackbox. Nobody defines how exactly they must be implemented so long as their use results in the described runtime behaviour. @user@freespeechextremist.com @georgia@netzsphaere.xyz @meowski@fluf.club @pasture@pl.gamers.exposed @pernia@freespeechextremist.com
Reply to @[email protected]
@socjuswiz@spinster.xyz @georgia@netzsphaere.xyz @meowski@fluf.club @pasture@pl.gamers.exposed @pernia@freespeechextremist.com @user@freespeechextremist.com > The produced executable does not behave differently when run. I gave two examples of it behaving differently, I can give more. > looks into implementation details. Have you never used a different libc? > A process in a UNIX environment should be seen as a blackbox with the following inputs and outputs: This is not a rule for a Unix environment. This is also a pants-on-head stupid non sequitur. A C compiler is not a Unix environment. C runs in several places that are not Unix environments. gcc is used in many of those places. "Unix" is not an acronym. (According to BWK, the small-caps style was due to excitement over adding small-caps to the typesetter.) If including an example of something as wild as "using the debugger and expecting that the program will do what you wrote" makes the example "wonky", I don't know how to help you. (Apparently v7's adb had breakpoints. But nobody was around to standardize the OS back then so I suppose Unix didn't exist until some time in the late 80s. One wonders how they got anything done!) gcc is a program inside this environment, I have executed it, and when I did, gcc has read some files and has written some files and I did not like its output. The output is not special simply because it's not text and the compiler is not special simply because it's a compiler: it's reading and writing and it has performed a bad transformation at one point. > The functions in the C and POSIX standards aid in ultimately producing this blackbox. This is the absolute worst way of viewing a standard. You have joined some sort of cargo cult: "Don't rely on implementation details remaining constant" is a very different thing from "Your environment is a black box." What you have described is not what a standard is for, it is not what this standard is for, and it is Even with your idiosyncratic rules, this is not the goal of a standard, and the standard is a guideline for implementors, and I am using a C compiler, not writing a POSIX-compliant system. POSIX is not the only OS standard, it is not the only Unix standard, it is not the C standard—of which there are also many–a standard is not the word of God, and POSIX is garbage anyway. *Should* the C compiler do this? I don't know, apparently unless I join a standards body, I'm not allowed to ask that question! "Not all that is lawful is honest" is a better way to approach this. "Is it the right thing to do?" is a very different question from "Is it legal?" If it's stupid behavior and the standard allows it, then the standard is not relevant for discussion of the behavior. If it's stupid behavior and the standard *requires* it, then the standard is stupid. In either case, "It's allowed to do this" is not a relevant point. Try, even once, writing a performant compiler or bytecode interpreter, or writing embedded software. Which functions the thing calls matters. It matters whether or not it translates to the same number of syscalls. Even if you're in a completely normal-looking Unix system, syscall overhead matters in any case where performance matters. If you are making anything, anything at all, that thing's dependencies are going to matter if you want it to actually work. If you write C, you will, sooner or later, have to stop pretending that you don't know how the stack works, or how paging works, or how syscalls work, or how your system lays out its memory, or how it works on other systems on which you expect your code to run, or endianness, or any of that. Go do whatever you people do: write another clone of grep in Rust, write an impassioned blog post defending Haskell's excessive memory usage, opine on Hacker News about how nobody but you really *gets* Dijkstra, or something. Adults are talking in this thread.
Show more
Reply to @[email protected]
@meowski@fluf.club @georgia@netzsphaere.xyz @pasture@pl.gamers.exposed @pernia@freespeechextremist.com @rdr@posting.lolicon.rocks @user@freespeechextremist.com Yeah, I'm just saying, this is bad, the compiler should not do this, and should not have to be told not to do this. Messing with stuff around function calls is bad but it does the pointer-chase twice for something like "x->y->z++; if(x->y->z > 10) stuff();". Memory traffic's what gets you nowadays but the dragon book is about register allocation and compiler authors apparently would rather stick to that kind of thing.
woodland creature
Reply to @[email protected]
@p@freespeechextremist.com @georgia@netzsphaere.xyz @pasture@pl.gamers.exposed @pernia@freespeechextremist.com @rdr@posting.lolicon.rocks @user@freespeechextremist.com >it does the pointer-chase twice the trade off there would be memory usage vs speed. puts vs printf example is pretty innocuous. if you don't wnt to disable them entirely, you can also generate a report of which optimizations were used
Reply to @[email protected]
@p@freespeechextremist.com @meowski@fluf.club @georgia@netzsphaere.xyz @pasture@pl.gamers.exposed @pernia@freespeechextremist.com @rdr@posting.lolicon.rocks @user@freespeechextremist.com > tell compiler to optimize code > compiler optimized code > OxO Optimization means go fast while remaining standard compliant. debugging behavior is not relevant to optimization. you told compiler to do it and it did what you asked.
Reply to @[email protected]
@meowski@fluf.club @georgia@netzsphaere.xyz @pasture@pl.gamers.exposed @pernia@freespeechextremist.com @rdr@posting.lolicon.rocks @user@freespeechextremist.com > the trade off there would be memory usage vs speed. There's actually no trade-off there. It boils down to "deref address in register into other register" a few times, then increment, store result, then a comparison. It doesn't need to reload before the comparison. > puts vs printf example is pretty innocuous. if you don't wnt to disable them entirely, you can also generate a report of which optimizations were used In this case, it's "-fno-builtin", and it happens with optimization off.
woodland creature
Reply to @[email protected]
Reply to @[email protected]
pernia - https://freespeechextremist.com/users/pernia meowski - https://fluf.club/users/meowski @p - https://freespeechextremist.com/users/p pasture - https://pl.gamers.exposed/users/pasture rdr - https://posting.lolicon.rocks/users/rdr user - https://freespeechextremist.com/users/user getting others to fight your battles is gay, your initial position of gpl software sucks was indefensible and you had to move the goalposts twelve times
Reply to @[email protected]
@georgia@netzsphaere.xyz @meowski@fluf.club @p@freespeechextremist.com [email protected]@[email protected] rdr@[email protected] @user@freespeechextremist.com i'm not making anyone fight battles, i just tagged someone who knew more about the topic i mencioned than I did. i'm also not making anyone defend the elitist joke i made which made everyone's pussy clench up
Reply to @[email protected]
@shironeko@fedi.tesaguri.club @georgia@netzsphaere.xyz @meowski@fluf.club @pasture@pl.gamers.exposed @pernia@freespeechextremist.com @rdr@posting.lolicon.rocks @user@freespeechextremist.com > debugging behavior is not relevant to optimization. If you've got a bug that only manifests with optimization on, it is. > you told compiler to do it and it did what you asked. This happens with -O0, no optimization, which I keep forgetting because it's too egregious to make sense. (On the other hand, since this is not an optimization, it makes a kind of perverse sense.) Here's this from the note I made about it last time:
Reply to @[email protected]
@p@freespeechextremist.com @georgia@netzsphaere.xyz @meowski@fluf.club @pasture@pl.gamers.exposed @pernia@freespeechextremist.com @rdr@posting.lolicon.rocks @user@freespeechextremist.com lmao, this is hilarious, i guess built-ins are not covered by -O flag. really gcc is a library, more than an compiler. :(
Reply to @[email protected]
@meowski@fluf.club @georgia@netzsphaere.xyz @pasture@pl.gamers.exposed @pernia@freespeechextremist.com @rdr@posting.lolicon.rocks @user@freespeechextremist.com The end of the rabbit hole is just that you make peace with the compiler being terrible like compilers were in the 80s but for different reasons and with no escape and periodically someone says "Actually, this is good."
Reply to @[email protected]
@georgia@netzsphaere.xyz @pernia@freespeechextremist.com @meowski@fluf.club @pasture@pl.gamers.exposed @rdr@posting.lolicon.rocks @user@freespeechextremist.com > your initial position of gpl software sucks was indefensible It's a perfectly defensible position because all software sucks. Take the Al Viro pill.
Jeff "never puts away anything, especially oven mitts" Cliff, Bringer of Nightmares 🦝🐙 🇱🇧🧯 🇨🇦
Reply to @[email protected]
@p@freespeechextremist.com @socjuswiz@spinster.xyz @georgia@netzsphaere.xyz @meowski@fluf.club @pasture@pl.gamers.exposed @pernia@freespeechextremist.com @user@freespeechextremist.com the real interesting part is what happens when the culture wars come for the C standards bodies because you know that's next and suddenly, whether to put an endline on a string becomes as important as whether jesus redeemed our sins
[MOVED] Neopolitan
Reply to @[email protected]
@p@freespeechextremist.com @georgia@netzsphaere.xyz @meowski@fluf.club @pasture@pl.gamers.exposed @pernia@freespeechextremist.com @rdr@posting.lolicon.rocks @user@freespeechextremist.com Right now, I'm in a state where my first preference is to have working software. If possible, I want working "free as in freedom" software. But I also want my shit to work more or less as expected. If free software can't perform, I'll find an alternative. I don't have unlimited time to baby my programs, they should just work without major issue.
Reply to @[email protected]
@georgia@netzsphaere.xyz @p@freespeechextremist.com @meowski@fluf.club [email protected]@[email protected] rdr@[email protected] @user@freespeechextremist.com 1) never said that, i cited it as a permissively liscened alternative that was packaged the same way (a single binary) and that did the same thing. bsd coreutils are better than both busybox and toybox 2) you provided no counterarguments to that strawman either 3) you are a trannie case closed