Keith Packard၊ တက်ကြွသော Debian developer၊ X.Org ပရောဂျက်၏ခေါင်းဆောင်နှင့် XRender၊ XComposite နှင့် XRandR အပါအဝင် X extensions များစွာကို ဖန်တီးသူ၊
Keith Packard သည် RAM အနည်းငယ်ပါသော စက်များတွင် အသုံးပြုနိုင်သည့် လျောက်ပတ်သော Libc ရွေးချယ်မှုကို ရှာမတွေ့ပြီးနောက် ဖွံ့ဖြိုးတိုးတက်မှုစတင်ခဲ့သည်။ ပရောဂျက်ကို မနှစ်ကကတည်းက ဖော်ဆောင်ခဲ့တာ။ ပထမအဆင့်တွင်၊ ပရောဂျက်သည် newlib ၏ မူကွဲတစ်မျိုးဖြစ်ပြီး avrlibc မှ ကျစ်ကျစ်လျစ်လျစ်သောဗားရှင်းဖြင့် အစားထိုးထားသော stdio ၏လုပ်ဆောင်ချက်များ (newlib တွင် stdio သည် ၎င်း၏မြင့်မားသောအရင်းအမြစ်သုံးစွဲမှုအတွက် မသင့်လျော်ပါ)။ Keith ၏လက်ရှိအလုပ်တွင် RISC-V ဗိသုကာလက်ရာနှင့် မြှုပ်သွင်းကိရိယာများအတွက် ကိရိယာများ ဖွံ့ဖြိုးတိုးတက်မှုတို့နှင့်အတူ ဆက်လက်လုပ်ဆောင်နေသောကြောင့်၊ ၎င်းက မကြာသေးမီက libc အကောင်အထည်ဖော်မှုများ၏အခြေအနေကို ပြန်လည်သုံးသပ်ပြီး အနည်းငယ်ပြင်ဆင်ခြင်းဖြင့်၊ newlib နှင့် avrlibc ပေါင်းစပ်မှုသည် ယေဘူယျရည်ရွယ်ချက်ကောင်းတစ်ခုဖြစ်နိုင်ကြောင်း ကောက်ချက်ချခဲ့သည်။ ဖြေရှင်းချက်။ အစပိုင်းတွင် ပရောဂျက်ကို “newlib-nano” ဟူသောအမည်ဖြင့် တီထွင်ခဲ့သော်လည်း Newlib စာကြည့်တိုက်နှင့် ရှုပ်ထွေးမှုများကို ရှောင်ရှားရန် PicoLibc ဟု အမည်ပြောင်းခဲ့သည်။
၎င်း၏လက်ရှိပုံစံတွင်၊ Picolibc သည် BSD လိုင်စင်အောက်တွင် ပံ့ပိုးမထားသော ကုဒ်အားလုံးကို ဖယ်ရှားရန် လုပ်ဆောင်ထားပြီး (ဤကုဒ်ကို ထည့်သွင်းထားသည့် စက်ပစ္စည်းများအတွက် တည်ဆောက်ရာတွင် အသုံးမပြုပါ)၊ ပရောဂျက်အတွက် လိုင်စင်နှင့် အခြေအနေကို သိသိသာသာ ရိုးရှင်းစေပါသည်။ ဒေသခံစီးကြောင်းများ၏ အကောင်အထည်ဖော်မှုကို 'struct _reent' မှ TLS ယန္တရားသို့ ရွှေ့ထားသည် (
Picolibc ဗားရှင်း 1.1 တွင်-
- နည်းပညာပံ့ပိုးကူညီရန် အရန်စာကြည့်တိုက်များ ပေါင်းထည့်ထားသည်”
semihosting "ဟို့စ်စနစ်၏ I/O ယန္တရားများကို အသုံးပြုရန် အမှားရှာကိရိယာ သို့မဟုတ် emulator ပတ်၀န်းကျင်တွင် ကုဒ်ကို အသုံးပြုခွင့်ပေးသည်။ - စနစ်ခေါ်ဆိုမှုများကို အဖွင့်၊ ပိတ်၊ ဖတ်၊ ရေးခြင်းတို့ကို ပံ့ပိုးပေးသည့် စနစ်များအတွက် tinystdio သည် fopen နှင့် fdopen လုပ်ဆောင်ချက်များအပါအဝင် စံသတ်မှတ်ထားသော POSIX stdio I/O အင်တာဖေ့စ်များကို ပေါင်းထည့်သည့်အပြင်၊ stdin/stdout/stderr တို့ကို POSIX-သတ်မှတ်ထားသော ဖိုင်ဖော်ပြချက်များနှင့် ပေါင်းစပ်ထားသည်။
- newlib codebase မှ မကြာသေးမီက အပြောင်းအလဲများ ပြီးဆုံးသွားပါပြီ။ ထည့်သွင်းထားသော libm ချလံများ ပါဝင်သည်။
fenv.h Floating Point ပံ့ပိုးမှုမရှိဘဲ စနစ်များတွင် အသုံးပြုနိုင်သည့်၊ - ARM နှင့် RISC-V စနစ်များအတွက် picolibc ဖြင့် “Hello world” အက်ပလီကေးရှင်းကို တည်ဆောက်ခြင်း၏ ဥပမာတစ်ခု ထပ်ထည့်ထားသည်။
- အသုံးမပြုသော စမ်းသပ်ကုဒ်များပါရှိသော newlib၊ libm နှင့် mathfp လမ်းညွှန်များကို ဖယ်ရှားခဲ့သည်။
source: opennet.ru