Open source konference DevConf.CZ 2026 proběhne 18. a 19. června v Brně na FIT VUT. Publikován byl program a spuštěna byla registrace.
Společnost JetBrains uvolnila verzi 2 svého open-source velkého jazykového modelu (LLM) pro vývojáře Mellum.
Probíhá konference Microsoft Build 2026. Microsoft představuje své novinky: kvantový čip Majorana 2, Surface Laptop Ultra a Surface RTX Spark Dev Box s NVIDIA RTX Spark, Intelligent Terminal, Coreutils for Windows (fork Rust Coreutils), AI modely MAI, AI agenta Scout, platformu pro agent-first zařízení Project Solara, …
Google Chrome 149 byl prohlášen za stabilní. Nejnovější stabilní verze 149.0.7827.53 přináší řadu novinek. Podrobný přehled v poznámkách k vydání. Vylepšeny byly také nástroje pro vývojáře.
Pluto.jl, reaktivní notebook pro programovací jazyk Julia, dospěl do verze 1.0.
Byla vydána nová verze 12.0.0 vizuálního programovacího jazyka Snap! (Wikipedie) inspirovaného jazykem Scratch (Wikipedie). Přehled novinek na GitHubu.
Počítačovou hru Gravity Circuit (ProtonDB) lze do 14. června do 19:00 získat na Steamu zdarma. Napořád.
Nejnovější X.Org X server 21.1.23 a Xwayland 24.1.12 řeší 9 bezpečnostních chyb.
npm balíčky @redhat-cloud-services byly kompromitovány.
Byly publikovány informace o zranitelnosti CVE-2026-46243 pojmenované CIFSwitch v Linuxu od roku 2007. Běžný uživatel může získat práva roota (lokální eskalaci práv). V upstreamu je již opraveno.
Jak si můžete přečíst ve zprávičce, dnes vyšlo Pharo 1.4. Tento zápisek se ale bude věnovat tomu, co se chystá do další verze - serializeru Fuel. A protože to není úplně obyčejný serializer objektů, posouvá možnosti Smalltalku zase o kousek dál.
Způsobů, jak ukládat objekty do souborů, bylo a je ve Smalltalku celá řada. V první řadě je to samozřejmě samotná image jako obraz kompletní objektové paměti. EToys používají SmartRefStream přizpůsobený především přenášení projektů, existují serializery určené pro ukládání objektů do databází apod. Přesto se pár vývojářů rozhodlo vytvořit nový moderní rychlý serializer - a tak světlo světa spatřil Fuel.
Hlavní předností Fuelu je, že na rozdíl od většiny ostatních serializerů, se nezalekne žádného typu objektu a dokáže se úspěšně vypořádat i s takovými situacemi, kdy se například struktura třídy nahrávaného objektu změnila. A protože ve Smalltalku je vše objekt, znamená to, že serializovat lze cokoliv.
V praxi je, krom práce s běžnými datovými objekty, nejzajímavější možnost použít Fuel k přenášení tříd a metod a využít tak Fuel jako alternativní způsob nahrávání balíčků do image. Klasické soubory se zdrojovými kódy vyžadují samozřejmě kompilaci, která je sice ve Smalltalku značně přímočará a tedy i rychlá, ale přeci jen... Navíc v rukou balíčkovacího a verzovacího systému Monticello se se zdrojovými kódy provádí ještě celá řada analýz a porovnávání, takže výsledek nepatří k nejrychlejším. Pro jistotu doplním, že pokud ve Smalltalku chcete se zdrojovými kódy pracovat v rámci jeho integrovaného vývojového prostředí a nikoliv jen jako s holými zdrojovými soubory, musíte je mít zkompilovány (převedeny na objekty). Proto je možnost rychle přenášet zkompilované balíčky v binární formě mezi různými image přínosná.
Otevírá se tak například možnost do ořezané malé konzolové image rychle dohrát třeba kompletní grafické prostředí s vývojovými nástroji. Minulý týden jsem provedl test prověřující právě toto a výsledné video umístil na youtube: http://www.youtube.com/watch?v=pOyvXamn3Y4. Operace, která zde zabere přibližně 15 sekund a většina z toho je ještě inicializace, na projektovém CI serveru Jenkins s pomocí Monticella zabere přibližně 11 minut. Výslednou image lze během několika sekund ořezat zpět.
Když už máme možnost nahrát zdrojové kódy bez kompilace, znamená to, že ani nepotřebujeme kompilátor. Ten je u původního Smalltalku-80 součástí image, což znamená, že Smalltalk je program postupně kompilující sama sebe. To má celou řadu zajímavých důsledků a výhod, ale občas můžeme usoudit, že kompilátor jednoduše nechceme. Třeba pro nasazení výsledných programů nebo proto, že v rámci modularity chceme mít kompilátor jako volitelnou součást systému. Hodí se to také proto, že současný kompilátor v Pharo je už značně vousatá záležitost neoplývající zrovna moderním návrhem. Ostatně, kdy naposledy jste třeba viděli třídu Parser dědit ze třídy Scanner? Kompilátor ve Pharu proto čeká výměna za projekt Opal. Jestli to bude už v následující verzi 2.0 zatím není zcela jasné, kompilátor je jedna z nejstarších částí systému a image je jím pěkně prožraná. Nicméně i tak se mi podařilo ověřit možnost mít image s nahraným Fuelem, ze které byl odebrán kompilátor (ne zcela důsledně, ale nezůstala v ní žádná z jeho tříd). Této image bylo možné předat jako argument balíček, který nahrála a spustila. Samozřejmě tímto balíčkem může být i samotný kompilátor. Otevírá se tak cesta pro další modularizaci a čištění jádra systému.
Nahrávání balíčků se zdrojáky přes Fuel je sice užitečná věc, ale poměrně nudná a mysl smalltalkera zvyklého na všeliké zvrácenosti příliš neuspokojí. Fuel však lze použít i k zajímavějším věcem vycházejícím z toho, že ve Smalltalku i kontext zásobníku tvoří objekty. To může mít celou řadu praktických uplatnění. Pro webové aplikace to je možnost serializovat kontinuace. A možnost přenášet otevřený debugger z jedné image do druhé sice na první pohled vypadá poněkud akademicky a zběsile, ale v okamžiku, kdy používáte malou produkční image, která ani debugger třeba nemá, může být možnost při chybě přesunout stav výpočtu do jiné image a tam jej začít ladit, k nezaplacení. Vlastně stačí výjimku zpracovat pomocí jediného příkazu
FLSerializer serialize: thisContext toFileNamed: 'PharoDebug.fuel'.
a pak tento soubor v jiné image otevřít pomocí kódu:
| aContext | aContext := FLMaterializer materializeFromFileNamed: 'PharoDebug.fuel'. Debugger openContext: aContext label: 'This is the new debugger!' contents: nil
Tím ale výčet věcí, ke kterým lze Fuel použít, zdaleka nekončí. Jeho autoři nad ním například vytvořili systém, který umožňuje mít libovolný podgraf objektů v externí paměti napojené na image pomocí speciálních proxy objektů. A protože ve Smalltalku je vše objekt... ale to už je zase jiná pohádka.
Tiskni
Sdílej:
Používat GUI není nezbytně nutné (Pharo má verze bez grafického rozhraní). Také existují rozšíření pro snazší scriptování (Coral). Smalltalk je povětšinou o něco rychlejší než Ruby nebo Python, je jednodušší a má odrazující explorativní IDE
Většinou se používá ve spojitosti s webovým frameworkem Seaside. Moc si nerozumí s nativním UI. Na všechno se samozřejmě nehodí, ale použitelný je 
use Data::Dump::Streamer;
sub cl {
my $a = 0;
sub {$a++}, sub {$a--};
}
my @fun1 = (cl, cl);
Dump(\@fun1); # Sup s tim do DB
Kdyz jsem si se smalltalkem hral, tak se mi to nepodarilo, ac by clovek cekal, ze u objektoveho jazyka to bude trivialni.