Byla vydána beta verze openSUSE Leap 16. Ve výchozím nastavení s novým instalátorem Agama.
Devadesátková hra Brány Skeldalu prošla portací a je dostupná na platformě Steam. Vyšel i parádní blog autora o portaci na moderní systémy a platformy včetně Linuxu.
Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).
Revolut nabídne neomezený mobilní tarif za 12,50 eur (312 Kč). Aktuálně startuje ve Velké Británii a Německu.
Společnost Amazon miliardáře Jeffa Bezose vypustila na oběžnou dráhu první várku družic svého projektu Kuiper, který má z vesmíru poskytovat vysokorychlostní internetové připojení po celém světě a snažit se konkurovat nyní dominantnímu Starlinku nejbohatšího muže planety Elona Muska.
Poslední aktualizací začal model GPT-4o uživatelům příliš podlézat. OpenAI jej tak vrátila k předchozí verzi.
Google Chrome 136 byl prohlášen za stabilní. Nejnovější stabilní verze 136.0.7103.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 8 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.
Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových
… více »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.