Evropská komise naléhavě vyzvala členské státy EU, aby kvůli ochraně nezletilých na internetu urychlily zavádění unijní aplikace pro ověřování věku a zajistily její dostupnost do konce roku. Členské státy mohou zavést aplikaci EU pro ověřování věku jako samostatnou aplikaci nebo ji integrovat do takzvané evropské peněženky digitální identity.
Richard Biener oznámil vydání verze 16.1 (16.1.0) kolekce kompilátorů pro různé programovací jazyky GCC (GNU Compiler Collection). Jedná se o první stabilní verzi řady 16. Přehled změn, nových vlastností a oprav a aktualizovaná dokumentace na stránkách projektu. Některé zdrojové kódy, které bylo možné přeložit s předchozími verzemi GCC, bude nutné upravit.
Zulip Server z open source komunikační platformy Zulip (Wikipedie, GitHub) byl vydán ve verzi 12.0. Přehled novinek v příspěvku na blogu.
Před 30 lety, tj. v úterý 30. dubna 1996, byl spuštěn Seznam.cz.
Byly zpracovány a zveřejněny všechny videozáznamy, které stojí za zveřejnění, z konference FOSDEM 2026.
Od úterý 28. dubna musí nově uváděné notebooky v Evropské unii podporovat nabíjení přes USB-C. Jednotná nabíječka byla schválena Evropským parlamentem v říjnu 2022.
Byly publikovány informace o kritické zranitelnosti CVE-2026-31431 pojmenované Copy Fail v Linuxu, konkrétně v kryptografii (AF_ALG). Běžný uživatel může získat práva roota (lokální eskalaci práv). Na všech distribucích Linuxu vydaných od roku 2017. Pomocí 732bajtového skriptu. V upstreamu je již opraveno. Zranitelnost byla nalezena pomocí AI Xint Code.
Textový editor Zed dospěl do verze 1.0. Představení v příspěvku na blogu.
Vývojáři svobodného 3D softwaru Blender představili (𝕏, Mastodon, Bluesky) nejnovějšího firemního sponzora Blenderu. Je ním společnost Anthropic stojící za AI Claude a úroveň sponzoringu je Patron, tj. minimálně 240 tisíc eur ročně. Anthropic oznámil sponzorství v tiskové zprávě Claude for Creative Work.
VNC server wayvnc pro Wayland kompozitory postavené nad wlroots - ne GNOME, KDE nebo Weston - byl vydán ve verzi 0.10.0. Vydána byla také verze 1.0.0 související knihovny neatvnc.
C++ -- Vala -- Javapozici, ale v této
Vala
/ \
/ \
C++ Java
pozici. ;) 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: