Byla vydána nová verze 1.12.0 dynamického programovacího jazyka Julia (Wikipedie) určeného zejména pro vědecké výpočty. Přehled novinek v příspěvku na blogu a v poznámkách k vydání. Aktualizována byla také dokumentace.
V Redisu byla nalezena a v upstreamu již opravena kritická zranitelnost CVE-2025-49844 s CVSS 10.0 (RCE, vzdálené spouštění kódu).
Ministr a vicepremiér pro digitalizaci Marian Jurečka dnes oznámil, že přijme rezignaci ředitele Digitální a informační agentury Martina Mesršmída, a to k 23. říjnu 2025. Mesršmíd nabídl svou funkci během minulého víkendu, kdy se DIA potýkala s problémy eDokladů, které některým občanům znepříjemnily využití možnosti prokázat se digitální občankou u volebních komisí při volbách do Poslanecké sněmovny.
Společnost Meta představila OpenZL. Jedná se o open source framework pro kompresi dat s ohledem na jejich formát. Zdrojové kódy jsou k dispozici na GitHubu.
Google postupně zpřístupňuje českým uživatelům Režim AI (AI Mode), tj. nový režim vyhledávání založený na umělé inteligenci. Režim AI nabízí pokročilé uvažování, multimodalitu a možnost prozkoumat jakékoliv téma do hloubky pomocí dodatečných dotazů a užitečných odkazů na weby.
Programovací jazyk Python byl vydán v nové major verzi 3.14.0. Podrobný přehled novinek v aktualizované dokumentaci.
Bylo oznámeno, že Qualcomm kupuje Arduino. Současně byla představena nová deska Arduino UNO Q se dvěma čipy: MPU Qualcomm Dragonwing QRB2210, na kterém může běžet Linux, a MCU STM32U585 a vývojové prostředí Arduino App Lab.
Multiplatformní open source voxelový herní engine Luanti byl vydán ve verzi 5.14.0. Podrobný přehled novinek v changelogu. Původně se jedná o Minecraftem inspirovaný Minetest v říjnu loňského roku přejmenovaný na Luanti.
Byla vydána nová stabilní verze 6.10 (YouTube) multiplatformního frameworku a GUI toolkitu Qt. Podrobný přehled novinek v poznámkách k vydání.
C++ -- Vala -- Javapozici, ale v této
Vala / \ / \ C++ Javapozici. ;) Teď vážně, myslím, že je to dobrý vysokoúrovňový jazyk, který ke svému rychlému běhu nepotřebuje žádný velký balast navíc.
public abstract Task? get (int index);Jenom int to může být, tralalala tralalala lala.
Nevím, jestli jsem správně pochopil tento komentář, ale pokud jde o to, že by ve Vale mělo být možné indexovat (public abstract Task? get (int index);Jenom int to může být, tralalala tralalala lala.
[]
) pouze hodnotou typu int
, tak to bych rád uvedl na pravou míru. Vala totiž umožňuje použití libovolného typu, stačí správně zadefinovat metodu get
. Ostatně i TaskManager
má tuto metodu definovánu jako
public new TaskCollection? get (string title)Pokud šlo o cokoliv jiného, omlouvám se za "nemístnou" odpověď. :)
sizeof(cokoliv) * něco_typu_int_který_může_být_záporný_a_dostanu_tak_kravinu
je naprosto vpořádku a nemůže se stát nic špatného
sizeof(int) <= sizeof(size_t)
chci spojit pole, je ok udělat malloc(něco_typu_int+něco_typu_int) i když to třeba přeteče a smaže pak pevný disk. Nebo mi to třeba dá malloc(-1) a po převodu na size_t mi to hodí třeba nějaký 0xFFFFFFFFFFFFFFFF.
using GLib; namespace bla { class Bla { static char[] join_array(char[] array1, char[] array2) { // TODO: copy elements int len = array1.length + array2.length; return new char[len]; } public static void main(string[] args) { char[] array1 = new char[int.MAX]; char[] array2 = new char[int.MAX]; char[] array3 = join_array(array1, array2); stdout.printf("array1.length = %d, array2.length = %d, array3.length = %d\n", array1.length, array2.length, array3.length); } } }Mi vyprskne:
(process:1800): GLib-ERROR **: gmem.c:195: failed to allocate 18446744073709551614 bytesUrčitě né proto, že na mé platformě 2G+2G je 4G, ale proto, že to jaksi přeteklo, náhodou to nesmazalo pevný disk, pak se to převedlo na size_t (resp. gsize, protože to alokuje přes g_new0 z glib) a vyprsklo to kravinu. Kdyby vala používala size_t, tak by se toto na mé platformě nestalo a program by běžel správně. Vala tak na mé platformě uměle omezuje velikost pole na INT_MAX, ǎckoli pak vygeneruje C kód a to mě omezuje SIZE_MAX. Výsledkem je omezení na MIN(INT_MAX, SIZE_MAX), na mé platformě je INT_MAX menší. A když náhodou dám Vale hint, že array_length_type je size_t, tak si nepomůžu, stejně to přetypuje na int:
[CCode(array_length_type = "size_t")] static char[] join_array([CCode(array_length_type = "size_t")] char[] array1, [CCode(array_length_type = "size_t")] char[] array2) { return new char[array1.length + array2.length]; } // --> static gchar* bla_bla_join_array (gchar* array1, size_t array1_length1, gchar* array2, size_t array2_length1, size_t* result_length1) { gchar* result = NULL; gchar* _tmp0_; gint _tmp0__length1; gchar* _tmp1_; gint _tmp1__length1; gchar* _tmp2_ = NULL; gchar* _tmp3_; gint _tmp3__length1; _tmp0_ = array1; _tmp0__length1 = (gint) array1_length1; _tmp1_ = array2; _tmp1__length1 = (gint) array2_length1; _tmp2_ = g_new0 (gchar, _tmp0__length1 + _tmp1__length1); _tmp3_ = _tmp2_; _tmp3__length1 = _tmp0__length1 + _tmp1__length1; if (result_length1) { *result_length1 = _tmp3__length1; } result = _tmp3_; return result; }
public class Boo : GLib.Object { string val; public Boo (string val) { this.val = val; } } public class Foo { private Boo _boo; public Foo (string val){ _boo = new Boo(val); } public Boo boo { get { return _boo; } set { _boo = value; } } public void debug () { stdout.printf ("_boo addr: %p\n", _boo); } } void main () { var foo = new Foo("I'm foo"); var tmp = foo.boo; foo.debug(); stdout.printf ("temporary boo addr: %p\n", tmp); stdout.printf ("refcount: %u\n", tmp.ref_count); foo = null; stdout.printf ("temporary boo addr: %p\n", tmp); stdout.printf ("refcount: %u\n", tmp.ref_count); }Výstup si může každý otestovat sám:
_boo addr: 0xd96e30 temporary boo addr: 0xd96e30 refcount: 2 temporary boo addr: 0xd96e30 refcount: 1Tedy, implicitně se vždy vrací owned, a pokud to má být jinak, musí se to vynutit. Obecně ale platí, že právě v případě různých Gee kontejnerů si na to prostě musí člověk dávat pozor, a vše hezky kontrolovat proti dokumentaci :) Pokud sem něco pochopil špatně, tak se omlouvám, ale z článku to takhle vyplývá.
Tedy, implicitně se vždy vrací owned, a pokud to má být jinak, musí se to vynutit.On to s tím "implicitně" asi nebude tak jednoduché. V případě TaskCollection.dump se vrací nově konstruovaný
string
, který bez použití owned
prostě zanikne s tím, jak skončí get
blok. Pokud se v tomto případě owned
vynechá, kompilátor hlásí warning a program segfaultuje. Stejně tak i tutoriál Valy říká:
In contrast to normal methods, properties always have unowned return value.a také
The keyword owned can be used to specifically ask a property to return a owned reference of the value, therefore causing the property value be reproduced in the object side.Ne že by to souhlasilo s výsledky toho příkladu...
Tiskni
Sdílej: