Andreas Kling oznámil, že jelikož už se nevěnuje nezávislému operačnímu systému SerenityOS, ale výhradně jeho webovému prohlížeči Ladybird, přičemž vyvíjí primárně na Linuxu, SerenityOS opustí a Ladybird bude nově samostatný projekt (nový web, repozitář na GitHubu).
Po dvou měsících vývoje byla vydána nová verze 0.13.0 programovacího jazyka Zig (GitHub, Wikipedie). Přispělo 73 vývojářů. Přehled novinek v poznámkách k vydání.
Na čem aktuálně pracují vývojáři GNOME a KDE? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE.
Před 70 lety, 7. června 1954, ve věku 41 let, zemřel Alan Turing, britský matematik, logik, kryptoanalytik a zakladatel moderní informatiky.
NiceGUI umožňuje používat webový prohlížeč jako frontend pro kód v Pythonu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána ve verzi 2024.6. Z novinek lze vypíchnout lepší integraci LLM (OpenAI, Google AI, Ollama) nebo podporu Matter 1.3.
IKEA ve Spojeném království hledá zaměstnance do své nové pobočky. Do pobočky v počítačové hře Roblox. Nástupní mzda je 13,15 liber na hodinu.
Alyssa Rosenzweig se v příspěvku na svém blogu Vulkan 1.3 na M1 za 1 měsíc rozepsala o novém Vulkan 1.3 ovladači Honeykrisp pro Apple M1 splňujícím specifikaci Khronosu. Vychází z ovladače NVK pro GPU od Nvidie. V plánu je dále rozchodit DXVK a vkd3d-proton a tím pádem Direct3D, aby na Apple M1 s Asahi Linuxem běžely hry pro Microsoft Windows.
Byla vydána (𝕏) květnová aktualizace aneb nová verze 1.90 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a animovanými gify v poznámkách k vydání. Ve verzi 1.90 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Byla vydána (Mastodon, 𝕏) nová verze 2024.2 linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Přehled novinek se seznamem nových nástrojů v oficiálním oznámení.
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 DBKdyz jsem si se smalltalkem hral, tak se mi to nepodarilo, ac by clovek cekal, ze u objektoveho jazyka to bude trivialni.