[HN Gopher] Picolibc: C library designed for embedded 32- and 64...
       ___________________________________________________________________
        
       Picolibc: C library designed for embedded 32- and 64- bit systems
        
       Author : ingve
       Score  : 72 points
       Date   : 2022-11-14 16:52 UTC (6 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | hulitu wrote:
       | > Keith Packard
       | 
       | Now, that is a name.
       | 
       | Can this library be used as a replacement for glibc ?
        
       | NelsonMinar wrote:
       | More on Keith Packard's website: https://keithp.com/picolibc/
        
       | dang wrote:
       | Related:
       | 
       |  _Picolibc - Libc for Embedded Systems_ -
       | https://news.ycombinator.com/item?id=21150678 - Oct 2019 (41
       | comments)
        
       | JohnKuzyarko wrote:
        
       | bxparks wrote:
       | And because it's a fork of 'mirror/newlib-cygwin', searching for
       | "picolibc" on GitHub does not find it, even though this project
       | has 678 stars and the original newlib-cygwin has only 144 stars.
       | Why is GitHub search so broken?
        
         | otikik wrote:
         | Not bought by Musk yet :)
         | 
         | Seriously though: Making your fork "unhooked" from its parent
         | is not very difficult, it only takes one support request and
         | they usually get back to you within the week.
         | 
         | Independently of that, yes, search should find forks too.
        
       | ixtenu wrote:
       | What's the rationale for this project? In other words, what makes
       | it different than other embedded libc projects like Newlib or
       | uClibc-ng or musl? Not seeing any documentation which answers
       | this question.
        
         | suprjami wrote:
         | iirc Keith talked about other library comparisons in his LCA
         | talk about picolibc: https://youtu.be/SC6aBezNFFQ
        
         | TD-Linux wrote:
         | The biggest thing for me is the meson build system. newlib uses
         | autoconf-generated files checked into the build tree, with
         | several different versions of autoconf used depending on
         | directory. So you have to keep several versions of autoconf
         | around if you want to add e.g. another source file without
         | churning the generated files.
        
       | nerpderp82 wrote:
       | Libc is an antipattern (me saying it makes it so, like a best
       | practice) that has its own state, it should largely be avoided
       | for everything, but most of all embedded applications.
        
         | asveikau wrote:
         | All parts of libc are not created equal. Some bits have hard
         | dependencies on OS functionality that would make it a no-go in
         | embedded. Other pieces, like string functions, are 100% CPU
         | with no syscalls -- no reason not to have a good, optimized
         | memcpy on embedded.
        
         | AlotOfReading wrote:
         | Greenspun's rule also applies to libc's. I've seen far more
         | bugs introduced by bad "bare metal" libc reimplementations than
         | I've seen difficulties introduced by just using using a real
         | libc.
         | 
         | I'm not sure what your alternative is to stateful runtimes and
         | I'm very curious what such a thing would look like beyond the
         | reentrant APIs already in most libcs. Even Go and Haskell use
         | stateful runtimes above the OS e.g. allocators/GC.
        
           | makapuf wrote:
           | I guess you're mentioning Greenspun's 10th rule,
           | https://en.m.wikipedia.org/wiki/Greenspun%27s_tenth_rule:
           | 
           | > Any sufficiently complicated C or Fortran program contains
           | an ad hoc, informally-specified, bug-ridden, slow
           | implementation of half of Common Lisp.
        
         | kevin_thibedeau wrote:
         | It's easy to avoid the functions with global state and Newlib
         | can be built to minimize or eliminate their RAM consumption.
        
       ___________________________________________________________________
       (page generated 2022-11-14 23:00 UTC)