• úvod
  • témata
  • události
  • tržiště
  • přihlásit
  • diskuze
  • nástěnka
  • přihlásit
    přihlásit se
    registrace
    ztracené heslo?
    XCHAOSANSI C/C99 (specifikace), GNU C (gcc, glibc), Tiny C (tcc) a POSIX - ne nutně C++,g++,libstdc++ nebo Win32 API
    XCHAOS
    XCHAOS --- ---
    XCHAOS
    XCHAOS --- ---
    QuickJS Javascript Engine
    https://bellard.org/quickjs/
    XCHAOS
    XCHAOS --- ---
    QuickJS Javascript Engine
    https://bellard.org/quickjs/
    XCHAOS
    XCHAOS --- ---
    Laurent Bloch : « On me dit que ce texte signé Spencer Baggins @big… » - Mastodon -- Sciences.Re
    https://social.sciences.re/@lbloch/117366981422590361

    Fabrice Bellard

    A French engineer who lives quietly in Paris has spent 30 years writing software that the entire internet now runs on without knowing his name.

    He wrote the code that streams every YouTube video, every Netflix show, every TikTok clip. He wrote the code that runs the virtual servers underneath AWS, Google Cloud, and Microsoft Azure. He calculated more digits of pi than anyone in history. He has no Twitter. He has no marketing. He just keeps shipping.

    His name is Fabrice Bellard.

    Here is the story, because almost nobody outside the systems programming world knows what one man has built.

    Fabrice was born in 1972 in Grenoble, France. He studied at École Polytechnique, the top French engineering school. He never went to Silicon Valley. He never built a startup empire. He just wrote code.

    In 2000 he started a project called FFmpeg, an open-source multimedia framework for encoding, decoding, and streaming video. He was 28. The project did one thing nobody else had done well. It handled every video and audio format that existed, in one library, on every operating system. He led it himself for years.

    Today FFmpeg is the invisible engine of the internet. YouTube uses it. Netflix uses it. VLC uses it. Chrome and Firefox use parts of it. Every Android phone, every iPhone, every smart TV, every video editing tool you have ever touched runs FFmpeg somewhere underneath. If you have watched a video on a screen in the last 20 years, Fabrice's code processed it.

    He was not done.

    In 2003 he started QEMU, a machine emulator and virtualizer. He wrote it solo until version 0.7.1 in 2005. QEMU lets you run any operating system on any other operating system. It became the foundation of modern virtualization. KVM, the Linux kernel hypervisor, runs on top of QEMU. Every major cloud provider, AWS, Google Cloud, Microsoft Azure, IBM Cloud, runs virtual machines on infrastructure built around it. The Quick Emulator is the most cited piece of cloud infrastructure code on Earth.

    He kept going.

    In 2001 he won the International Obfuscated C Code Contest with a small C compiler that grew into TCC, the Tiny C Compiler. TCC can compile and boot a Linux kernel from source in under 15 seconds. In 2004 he calculated the most digits of pi ever computed at the time, using a personal desktop computer and an algorithm he derived himself called Bellard's formula. In 2011 he wrote a complete PC emulator in pure JavaScript that runs Linux in your browser, a project called JSLinux that engineers still cannot believe is real.

    In 2019 he released QuickJS, a small but complete JavaScript engine that fits where V8 cannot. In 2021 he released NNCP, a neural network based lossless data compressor that immediately took the lead on the Large Text Compression Benchmark.

    Then he turned his attention to large language models. He built TextSynth Server, a web server with a REST API for running LLMs locally. He released ts_zip and ts_sms, compression utilities that use language models to compress text and short messages at ratios traditional algorithms cannot reach. He released TSAC, a very low bitrate audio compression system. In December 2025 he released Micro QuickJS, a new JavaScript engine for microcontrollers, separate from QuickJS, designed for environments with almost no memory.

    Fabrice co-founded a telecom company called Amarisoft in 2012, where he serves as CTO. Amarisoft builds 4G and 5G base station software used by carriers and labs around the world. He has been running it for over a decade while continuing to ship personal projects from his own home page at bellard dot org

    He has no Twitter. He has no Instagram. He gives almost no interviews. His personal website is a flat list of projects with no styling, no fonts, no marketing copy. Just titles and links.

    A quiet French engineer who never moved to Silicon Valley wrote the code that quietly runs the internet.
    XCHAOS
    XCHAOS --- ---
    Making a Python interpreter in 1024 bytes - Austin Z. Henley
    https://austinhenley.com/blog/python1024.html
    XCHAOS
    XCHAOS --- ---
    XCHAOS
    XCHAOS --- ---
    At the same time, Torvalds pointed out, "some of our big and more high-profile bugs in the kernel lately have been logic errors" rather than the kind of memory errors Rust prevents.
    XCHAOS
    XCHAOS --- ---
    XCHAOS
    XCHAOS --- ---
    Hmm, tenhle způsob přístupu k extern char **environ jsem neznal, ale vlastně je to logické:

    int main(int ac, char **av, char **envp)
    XCHAOS
    XCHAOS --- ---
    DEREK_CUSTER: souvisí s tím i otázka "proč jsem přestal programovat". No jasně, pokud si člověk zvykne na rychlost (optimálně napsaného) kódu v C, tak mu skriptovací jazyky přijdou trapné, v letech 1999(?)-cca 2006(?) jsem trochu bastlill v PHP ale tam mi naprosto demotivoala ta postupná ztráta zpětné komptability byla prostě trapná. Od 2007 dál když něco fakt potřebuju, tak si to naskriptuju v Pythonu.

    C je ovšem nesmírně mocný nástroj, ale do ničeho většího bych se v tom nepustil, aniž bych měl vyjasněnou otázku správy paměti - ručně to dělat nebudu, i ta hloupoučká Arachne aspoň uvolňovala paměť po celých kontextech a ne ručně jeden pointer po druhém. Přistupovat k programování stylem "čím víc se nadřu, tím víc si zasloužím dostat zaplaceno" mi přijde taky docela chybná strategie.

    Tenhle klub jsem založil s ne zcela správnými úmysly v době, než jsem se setkal s [Rust - Programovací jazyk] - dnes by mi asi lákalo chodit na nějaký kurz/kroužek Rustu, kde by se pro blbý (s matnými vzpomínkami na C) na konkrétních příkladech ukazovalo, jak uvažovat o paměti jako v Rustu a ne jako v C. Samozřejmě, jsou i jiný zajímavý směry, ale jak jsem se na to tak koukal, tak by mi asi Rust seděl nejvíc (nemá teda paralelu k try ~ catch/expect, v tom je bližší Céčku..)
    XCHAOS
    XCHAOS --- ---
    DEREK_CUSTER: jako open source. Ale už jsem na to nesáhl 25 let.
    DEREK_CUSTER
    DEREK_CUSTER --- ---
    nojoo kde vlastně skončil ten xchaosův prohlížeč? :o
    DEREK_CUSTER
    DEREK_CUSTER --- ---
    XCHAOS
    XCHAOS --- ---
    DANIELSOFT: no tak minimálně existuje k dispozici víc dokumentace :-)) hele, browser bez javascriptu byl docela trapárna, a ještě byl udělanej dost špatně. Jediný zajímavý nápad ta byla správa paměti v DOSu, kterou jsem si teda neimplementoval celou sám, ale měl jsem nad ní takové svoje 16bitové handlery, které se teprve konvertovaly na pointer (takže logicky v paměti nemohlo být víc jak 65536 takhle adresovaných objektů, ale zase ono se jich tam o tolik víc nevešlo a adresovat 640 KB paměti 32bitovými pointery byla pod MS-DOSem jedna z největších blbostí...)

    Programovat celej shell se všema built-in fičurama by ale byl vopruz, to jejich zadání je takovej mlhavej subset shellu. Mě se do toho nechce, protože jsem se do toho kurzu nepřihlásil a navíc po nich chtěj takovej divnej subset C (maj povolený while() ale ne for() ... budiž, pro začátečníky netriviální ... a switch(), budiž, potenciál ke spaghetti code... ale proč jim zakazujou i do { } while()?).

    Ale vlastně je implementace shellu docela zajímavý cvičení na C, protože se tam musí při rozparsování té řádky a expandování environment proměnných provádět docela zajímavá gymnastika se stringy a pamětí. A má to okrajový význam z hlediska bezpečnosti, když by člověk chtěl, aby se po nabootování fakt logoval do něčeho úplně svýho.. z nějakého obskurně paranoidního důvodu...
    DANIELSOFT
    DANIELSOFT --- ---
    rozhodně je to jednodušší než vlastní browser, což už XCHAOS za sebou má :)
    XCHAOS
    XCHAOS --- ---
    já si o žádnou pomoc neříkám, sakra, ty do toho kurzu chodíš, já ne :-)
    DEREK_CUSTER
    DEREK_CUSTER --- ---
    CHALLENGE!!! pomozte xchaosovi naprogramovat vlastní terminál
    https://github.com/JaeSeoKim/42cursus/blob/master/pdf/en.subject-Minishell.pdf
    XCHAOS
    XCHAOS --- ---
    Curly braces: An evolution of UNIX and C | Thalia Archibald’s blog
    https://thalia.dev/blog/unix-braces/
    XCHAOS
    XCHAOS --- ---
    V podstatě a) věděl jsem, že takhle jde inicializovat pole, ale ne že to projde i na structy-y, b) nevěděl jsem, že mi projde takhle zapsat i pointer na něco, natož pak pointer na funkci.
    XCHAOS
    XCHAOS --- ---
    Ale tohle je ovšem tuze pěkný zápis a v gcc mi to projde. Schválně, kdo odhadne, kam tím mířím...

    int fn(void)
    {
     return 0;
    }
    
    struct interface
    {
     int (*fnptr)(void);
     int (*fnptr2)(void);
    };
    
    void main(void)
    {
     struct interface I = { &fn, &fn };
    }
    Kliknutím sem můžete změnit nastavení reklam