[HN Gopher] OpenBSD has two new C compilers: chibicc and kefir
       ___________________________________________________________________
        
       OpenBSD has two new C compilers: chibicc and kefir
        
       Author : hucste
       Score  : 237 points
       Date   : 2022-06-30 10:37 UTC (12 hours ago)
        
 (HTM) web link (briancallahan.net)
 (TXT) w3m dump (briancallahan.net)
        
       | linksnapzz wrote:
       | All I want for Christmas is a compliant C++11
       | compiler/transpiler, written in plain portable ANSI C.
        
       | skc wrote:
        
         | HideousKojima wrote:
         | It's the name of a weird fermented milk drink in a lot of
         | Slavic and other languages (I first encountered it in the Czech
         | Republic):
         | 
         | https://en.m.wikipedia.org/wiki/Kefir
        
           | jwilk wrote:
           | Non-mobile link:
           | 
           | https://en.wikipedia.org/wiki/Duck
        
             | proto_lambda wrote:
             | I would argue ducks are more mobile than your average glass
             | of kefir.
        
               | jwilk wrote:
               | Oops, sorry, I always confuse the two. The correct link:
               | 
               | https://en.wikipedia.org/wiki/Kefir
        
           | darrenf wrote:
           | There are shelves and shelves of it in UK supermarkets, it's
           | very popular here. I live a walk away from a dairy that
           | produces it (including kefir soap bars)
           | https://www.instagram.com/wildcroftdairy/
        
           | bawolff wrote:
           | Not just europe. I'm in canada and its very common to see it
           | in grocery stores (maybe not the most popular drink, but
           | popular enough people know what it is).
           | 
           | I fully knew what Kefir is before this post. I had never
           | heard of the slur everyone is talking about until reading
           | this comment section.
        
         | [deleted]
        
         | [deleted]
        
         | odiroot wrote:
         | Kefir is one of the most popular milk-based drinks in Poland.
        
         | jcahill wrote:
         | it's a CVCVC word that most people can pronounce and the
         | primary author likes for whatever reason. it's completely fine.
        
           | skc wrote:
           | Geez guys, all I'm saying is the name is unfortunate in the
           | same way coq https://en.wikipedia.org/wiki/Coq is bound to be
           | awkward when pronounced in other parts of the world.
           | 
           | I'm not implying there is anything nefarious about it.
        
             | tomc1985 wrote:
             | I'm sorry but what is wrong with the word 'kefir'
        
             | rvense wrote:
             | What's unfortunate about it?
        
               | nindalf wrote:
               | It sounds similar to _kaffir_ which is a derogatory term
               | used in the Middle East for people who don't practice a
               | certain religion. It is also used in South Africa in a
               | manner similar to the n-word in America.
        
               | [deleted]
        
               | aatharuv wrote:
               | Here in the US, I can go to many grocery stores, and have
               | my choice of kefir.
               | 
               | As an actual Hindu who has lived in a Muslim majority
               | Middle Eastern country, I'm not the tiniest bit offended,
               | because a fermented yogurt drink happens to have a
               | somewhat similar name as an insult based on religious
               | bigotry..
        
               | hulitu wrote:
               | In many european languages it definitely does not sounds
               | similar. A is a and e is e.
        
               | Siira wrote:
               | Here in Iran, the slur is pronounced as Kaafar, and the
               | drink as kefir. They sound distinct enough.
        
               | jhgb wrote:
               | Why is it derogatory? And what is the non-derogatory
               | alternative to that word in Arabic?
        
               | jonathanlydall wrote:
               | In South Africa it's equivalent to using N word.
        
               | jhgb wrote:
               | I'm quite obviously asking about Arabic as it is being
               | used in the Middle East. I've even spelled it out, and so
               | did the comment I was responding to. The irrelevant South
               | African fringe usage was _also_ already mentioned in the
               | comment I was responding to (hence your repetition of it
               | bringing zero new information) but of no interest to me
               | (unless you believe that Arabic is a widespread language
               | in South Africa), hence me not referring to it.
        
               | [deleted]
        
               | nindalf wrote:
               | I choose not to answer you because you're either a troll
               | or ignorant. Hopefully it's just the latter, in which
               | case feel free to use google to educate yourself.
        
               | jhgb wrote:
               | Not many people in the US or the EU speak Arabic. If I'm
               | ignorant of it and you're a speaker of Arabic, then why
               | don't you just enlighten me? Since when is removing one's
               | ignorance not the point of asking questions?
        
             | toast0 wrote:
             | I mean, I've got my feelings about formal methods, so the
             | implications about people going to technical conferences to
             | talk about Coq are spot on.
             | 
             | As a relatively unenlighted person on the topic of nasty
             | slurs, I apprechiate the tipoff that using the name of a
             | cultured milk drink sounds uncultured. Although, I tend to
             | name things with overworked puns, so there's that.
        
             | gavinray wrote:
             | I don't get why, can someone explain it to me?
             | 
             | I'm from the US, Kefir is healthy fermented yogurt-like
             | drink that is in every grocery store pronounced "kee-fur".
             | 
             | Does it mean something else in another language?
        
               | retrac wrote:
               | "Kafir" is an Arabic word meaning unbeliever or infidel,
               | and is used in the Islamic word as a pejorative for non-
               | Muslims. It's also been adopted elsewhere, such as a
               | nasty slur in South Africa for blacks.
        
               | unixhero wrote:
               | Kafir or kaffir is not kefir. Done. Nothing to see here.
               | Move along.
        
               | hulitu wrote:
               | I think they are talking about kEfir not kAfir. I presume
               | they don't mean the same thing.
        
               | leadingthenet wrote:
               | > I'm from the US, Kefir is healthy fermented yogurt-like
               | drink that is in every grocery store pronounced "kee-
               | fur".
               | 
               | Pretty unfortunate. Take a look here at a pronunciation
               | in English more closely resembling the original Caucasian
               | / Slavic: https://www.lexico.com/definition/kefir
               | (/k@'fI@/ in IPA). There's audio in the link, which
               | should hopefully clear up confusion.
               | 
               | This is also the common way I've heard it pronounced in
               | the UK, where the product appears on most major grocery
               | store shelves.
        
             | jhgb wrote:
             | This must be culturally specific since where I live there's
             | absolutely nothing even just unfortunate about the word
             | "kefir".
        
             | jcahill wrote:
             | I didn't downvote you. There are only so many
             | phonologically near-optimal patterns to recycle into things
             | that sound kinda-sorta like words, so you're bound to run
             | into these things. You just pick your poison and hope that
             | you don't end up being shipwrecked by a gale-force meme
             | like "fedora" as a pejorative with time.
             | 
             | fwiw, the concern you're thinking of tends to be
             | sidestepped either by a pseudo-initialism or a vowel shift
             | in actual practice. In this case, the first options / paths
             | of least resistance in an arabic-speaking community would
             | seemingly be:
             | 
             | - to raise the first vowel to more of an [I@]1 or
             | 
             | - to pronounce the /k@f/ - /kaf/ then "IR" as single
             | letters.
             | 
             | 1 which afaik would turn it into a long vowel that might
             | act like a geminate? dunno
        
       | cykros wrote:
       | Is it just me, or is the first time that "OpenBSD" and "New" were
       | in the same sentence? I love OpenBSD, but in fairness, its
       | biggest virtue is usually its rock solid stability and security,
       | derived from everything in it generally being long battle tested
       | before ever going into OpenBSD. The idea of bleeding edge C
       | compilers seems a bit strange, given that reputation.
        
         | aidenn0 wrote:
         | The default install is stable and secure; the ports tree is
         | much less so. People experimenting with things on their
         | personal workstations is a complete free-for-all.
        
         | asveikau wrote:
         | This is an experimental port and not about replacing clang.
         | 
         | That said, OpenBSD does introduce new stuff often. Over the
         | years, they've periodically rewritten a handful of crusty old
         | daemons for example.
        
           | xemdetia wrote:
           | I would say that for a lot of daemons OpenBSD ends up with
           | more interesting and cleaner versions than some of the
           | ancient BSD ilk or with some of the complexity of the GNU
           | replacements. It's often a lot easier to port part of/some of
           | an OpenBSD daemon with just a little bit of hacking around
           | instead of figuring out a bigger autotools chain.
        
         | practice9 wrote:
         | It's probably Debian you thinking of
        
         | naniwaduni wrote:
         | Not really, no? Plenty of bleeding-edge goes into OpenBSD, most
         | of it never makes it out to the rest of the world before being
         | battle-tested there.
        
         | bejelentkezni wrote:
         | It got a brand-new filesystem a couple years ago.
        
         | paldepind2 wrote:
         | The "new" in the headline refers to these compilers being newly
         | ported to OpenBSD. OpenBSD also sometimes gets new features,
         | sees new releases, etc. There's nothing weird about seeing
         | "new" and "OpenBSD" in the same headline.
        
           | asveikau wrote:
           | > OpenBSD also sometimes ... sees new releases
           | 
           | They do two releases per year on a schedule.
        
       | alex3305 wrote:
       | Thanks for this. I don't know anything about compilers, but I
       | really enjoyed reading this. Besides the technical insights it
       | provided, I also loved the positive attitude of this article. Two
       | excerpts that stood out for me:
       | 
       | > [...] if the code kefir produces is correct, then it is amazing
       | that one person was able to create a complete C17 compiler and
       | that fact should be celebrated.
       | 
       | > I'll admit this is not something I would have thought of but it
       | appears to work just fine.
        
       | jprotopopov wrote:
       | Kefir author here. Quite surprised to see it on HN. A few notes
       | in response to Brian's post and comments:
       | 
       | - Kefir name is simply a reference to milk drink, no other
       | connotation is intended. Updated project README with this
       | information.
       | 
       | - The compiler is indeed quite primitive, especially, in terms of
       | code generation. My main goal was implementing a C compiler that
       | is reasonably compliant with language standard and platform ABIs,
       | so I decided to simply ignore any performance considerations as I
       | wouldn't compete with well-established compilers anyway.
       | 
       | Usage of threaded code is also caused by the same reason -- it is
       | very simple to obtain assembly from intermediate representation
       | when the assembly is mostly composed from references to runtime
       | routines. Even without considering more sophisticated schemes of
       | code generation, current approach is not optimal -- threaded code
       | encoding scheme is very wasteful in terms of generated code
       | (which was also noted in the blog post) and has awful runtime
       | performance.
       | 
       | - I have tried to keep compiler compliant with the standard as
       | well as compatible some of widespread C extensions (with some
       | exceptions which I listed in README). Will try to address
       | compilation errors found by Brian. Unfortunately, currently I do
       | not have much time to work on the compiler. Identifying and
       | fixing such bugs might also be quite tedious, so I expect that
       | there are enough unnoticed compatibility problems there.
       | 
       | - Patches implementing OpenBSD support are appreciated. I plan to
       | integrate those into the main code tree at some point.
        
         | jcahill wrote:
         | bumping the author's chain and bluntly suggesting that others
         | (like myself) without much/any stake in openBSD's C compilers
         | should stfu with the name flaming now, because the fact that
         | it's still continuing in replies at this point is more a matter
         | of narcissism and disrespect for the submission than anything
         | else.
        
       | Rochus wrote:
       | chibicc is great and also a very useful tool to do different
       | kinds of C source code analysis and processing, such as
       | https://github.com/rochus-keller/c2obx/
        
       | 1vuio0pswjnm7 wrote:
       | Thanks to the author for oksh (portable OpenBSD ksh). It is a
       | pleasant alternative to Bash on Linux. 288KB vs 1.3MB. Wonder if
       | oksh will compile on mips74Kc. I started to do something similar
       | for NetBSD ash, for personal use only. Dash and busybox are OK,
       | but I want both fc and command line history.
        
       | kazinator wrote:
       | > _Here are the number for chibicc:_                   text
       | data    bss     dec     hex         753670  40034   29848
       | 823552  c9100
       | 
       | > _And here are the numbers for kefir:_                   text
       | data    bss     dec     hex        2374884 12071   30120
       | 2417075 24e1b3
       | 
       | These are behemoths; especially the latter. Only compared to the
       | grotesquelly aberrant code sizes of GCC and its ilk does this
       | look "small".
       | 
       | (The numbers in fact give me a dollop confidence that these are
       | might be substantially more than toys.)
        
       | boberoni wrote:
       | _> Kefir also says in all bold letters in its README.md:_
       | 
       |  _" Usage is strongly discouraged. This is [an] experimental
       | project which is not meant for production purposes."_
       | 
       |  _> That was all the encouragement I needed._
       | 
       | I love this
        
         | jcahill wrote:
         | for prod you'll want _mushrik_ or _neocon_
        
           | pritambaral wrote:
           | Wrong root word; you're thinking of kaffir. Kefir is a
           | fermented milk drink.
        
             | jcahill wrote:
             | not for the joke it isn't; i am not, in fact, thinking of
             | the racial slur; we all have google (but not all of us will
             | idly assume to know the etymology of a project's name based
             | on this); semicolons are awful punctuation
        
               | jhgb wrote:
               | > semicolons are awful punctuation
               | 
               | I'm glad that someone finally admitted that C is crap.
               | Clearly we need _fewer_ C compilers, not more of them!
               | Embrace Smalltalk!
        
               | pritambaral wrote:
               | Who said anything about "racial slur"s? In Urdu, one of
               | the languages I speak, "kaffir" means "non-believer".
               | Your suggestions 'mushrik' and 'neocon' seemed to fit
               | pretty perfectly with that interpretation.
               | 
               | ----
               | 
               | Aside: semicolons are pretty great once one learns to
               | wield them. Try it; you'll like it. Just think of it as a
               | shorter pause than a period, but longer than a comma.
        
               | technothrasher wrote:
               | Hey now, wait a minute. We can argue all day about kefir,
               | kafir, and kaffir, but don't you impinge on the dignity
               | of the semicolon just because the previous poster used
               | one incorrectly.
        
               | jcahill wrote:
        
               | kergonath wrote:
               | > because the previous poster used one incorrectly
               | 
               | The previous poster's usage of a semicolon in this
               | instance was, in fact, correct.
        
               | foldr wrote:
               | I don't think it's an incorrect use of the semicolon.
               | Semicolons are out of fashion these days, but using a
               | semicolon to join two related clauses is perfectly fine,
               | as far as semicolon usage goes.
        
               | cryptonector wrote:
               | This.
        
               | jcahill wrote:
               | epistemic crutch token
        
               | aidenn0 wrote:
               | A semicolon should link two _independent_ clauses; using
               | one to link a clause missing a verb to another clause is
               | arguably incorrect.
        
               | bawolff wrote:
               | But the verb in the second clause is not the elided verb
               | in the first clause, so it is not linking in that
               | fashion. The two clauses are independent of each other.
        
               | jhgb wrote:
               | Could you point out where do you see such wrong usage
               | here?
        
               | aidenn0 wrote:
               | > Wrong root word;...
        
               | jhgb wrote:
               | I don't see the wrong usage there, assuming that "Wrong
               | root word. You're thinking of kaffir." would have been
               | correct. Which it seems to be the case to me since both
               | "Wrong root word." and "You're thinking of kaffir." seem
               | to be correct sentences and juxtaposition is OK as well.
        
             | imajoredinecon wrote:
             | I think GP meant "ayran" or "doogh."
        
           | M_bara wrote:
           | Perhaps he meant mursik [1]
           | 
           | 1. https://en.m.wikipedia.org/wiki/Mursik
        
         | jraph wrote:
         | "Usage is strongly discouraged, not meant for production" is a
         | clue for "I actually put care into this thing, production use
         | is probably fine"
         | 
         | Garbage-quality projects don't bother putting such warnings.
         | They might even not be aware they are garbage.
         | 
         | (/s)
        
           | winReInstall wrote:
           | Ah, yes, love those, cobbled together embedded compilers. Not
           | a word in the Release.Me about the quirks. Just a
           | "STABLE!!!".
           | 
           | Like binary C-Operators will only work on the first 8 bits,
           | the rest is up there and needs to be shifted in and out..
           | basically work it out yourselve, once it wont work.
           | 
           | Then explain to the manager, that his hot project tooling
           | from the megacorp upstream was basically license-brokken copy
           | pasted garbage from some hobbyist half way around the world).
           | And get a no, when asking for at least posting the patches
           | back.
           | 
           | Or the "Working feature" which is just some api header, going
           | into a inlined binary blob returning some constant. Which is
           | just some flytrap to get you to drive by develop it for them.
           | Twelve angry part time devs, make up one full working
           | project.
           | 
           | The only professional in some industries is looking at you
           | every morning from the mirror, begging for a mercy killing.
        
             | asciii wrote:
             | > The only professional in some industries is looking at
             | you every morning from the mirror, begging for a mercy
             | killing.
             | 
             | That got dark quickly. Otherwise, so true
        
           | dijit wrote:
           | This is sarcasm but there is a lot of truth in it
           | unfortunately.
           | 
           | I'm sure there must be a term for this... known incompetence
           | > unknown incompetence.
           | 
           | Doing your own research on complicated products is hard,
           | that's why we as a community seem to move on to things via
           | trial and error.
        
             | masklinn wrote:
             | Isn't that a variant of Dunning-Kruger?
        
             | skipants wrote:
             | Considering that the developer is saying "not for
             | production" but the users are saying it works great in
             | production, I'd say the comparison should be "unknown
             | competence > unknown incompetence"
        
       ___________________________________________________________________
       (page generated 2022-06-30 23:00 UTC)