Rusko zcela zablokovalo komunikační platformu WhatsApp, řekl včera mluvčí Kremlu Dmitrij Peskov. Aplikace, jejímž vlastníkem je americká společnost Meta Platforms a která má v Rusku na 100 milionů uživatelů, podle Peskova nedodržovala ruské zákony. Mluvčí zároveň lidem v Rusku doporučil, aby začali používat domácí aplikaci MAX. Kritici tvrdí, že tato aplikace ruské vládě umožňuje lidi sledovat, což úřady popírají.
Před 34 lety, ve čtvrtek 13. února 1992, se tehdejší Česká a Slovenská Federativní Republika oficiálně (a slavnostně) připojila k Internetu.
Agent umělé inteligence vytvořil 'útočný' článek o Scottu Shambaughovi, dobrovolném správci knihovny matplotlib, poté, co vývojář odmítl agentem navrženou změnu kódu (pull request). 'Uražený' agent autonomně sepsal a publikoval na svém blogu článek, který přisuzuje Shambaughovi smyšlené motivace, egoismus a strach z AI coby konkurence.
Bylo vydáno Ubuntu 24.04.4 LTS, tj. čtvrté opravné vydání Ubuntu 24.04 LTS s kódovým názvem Noble Numbat. Přehled novinek a oprav na Discourse.
V pátek 20. února 2026 se v pražské kanceláři SUSE v Karlíně uskuteční 6. Mobile Linux Hackday, komunitní setkání zaměřené na Linux na mobilních zařízeních, kernelový vývoj a uživatelský prostor. Akce proběhne od 10:00 do večera. Hackday je určen všem, kteří si chtějí prakticky vyzkoušet práci s linuxovým jádrem i uživatelským prostorem, od posílání patchů například pomocí nástroje b4, přes balíčkování a Flatpak až po drobné úpravy
… více »Evropská rada vydavatelů (EPC) předložila Evropské komisi stížnost na americkou internetovou společnost Google kvůli její službě AI Overviews (AI souhrny), která při vyhledávání na internetu zobrazuje shrnutí informací ze zpravodajských serverů vytvořená pomocí umělé inteligence (AI). Evropská komise již v prosinci oznámila, že v souvislosti s touto službou začala firmu Google vyšetřovat. Google obvinění ze strany vydavatelů
… více »Ubuntu 26.04 (Resolute Raccoon) už nebude v desktopové instalaci obsahovat GUI nástroj 'Software & Updates'. Důvodem jsou obavy z jeho složitosti pro běžné uživatele a z toho plynoucích bezpečnostních rizik. Nástroj lze doinstalovat ručně (sudo apt install software-properties-gtk).
Thomas Dohmke, bývalý CEO GitHubu, představil startup Entire - platformu pro spolupráci vývojářů a agentů umělé inteligence. Entire získalo rekordních 60 milionů dolarů na vývoj databáze a nástrojů, které mají zefektivnit spolupráci mezi lidmi a agenty umělé inteligence. Dohmke zdůrazňuje potřebu přepracovat tradiční vývojové postupy tak, aby odpovídaly realitě, kdy většinu kódu produkuje umělá inteligence.
Toyota Connected North America oznámila vývoj open-source herního enginu Fluorite, postaveného na frameworku Flutter. Pro renderování grafiky využívá 3D engine Filament od společnosti Google a dle svého tvrzení cílí na konzolovou kvalitu her. Fluorite je zřejmě navržen tak, aby fungoval i na méně výkonném hardware, což naznačuje možnost použití přímo v ICE systémech vozidel. Zdrojový kód zatím zveřejněný není.
Byl vytvořen nástroj a postup pro překonání věkového ověření platforem Discord, Kick, Twitch, Snapchat (a možná dalších), kód je open-source a dostupný na GitHubu. Všechny tyto sítě používají stejnou službu k-ID, která určuje věk uživatele scanem obličeje a na původní server posílá pouze šifrovaná metadata, ty ale sociální síť už nedokáže sama nijak validovat, 'útok' spočívá ve vygenerování a podstrčení legitimně vypadajících ověřovacích metadat.
// C interface
alias extern(C) void function(void*) CallbackFunc;
extern(C) extern void nejaka_c_fce(CallbackFunc func, void* data);
extern(C) extern void cekej_na_callback();
//
class Bla
{
uint[] nejakyData;
this()
{
nejakyData = new uint[1024*1024*10]; // 40M
nejaka_c_fce(&cCallback, cast(void*)this);
}
void callback()
{
// něco tady
}
static extern(C) cCallback(void *data)
{
Bla self = cast(Bla)data;
self.callback();
}
}
// ...
Bla bla;
void main()
{
while (true)
{
bla = new Bla();
cekej_na_callback();
// tahle fce čeká na nějaký data a až dorazí
// tak zavolá ten callback v tomhle samým vlákně,
// pak vrátí
}
}
Něco v tom stylu výše. Referenci na objekt samozřejmě držím stranou, dokud není zavolán callback, takže problém se zrušením objektu by neměl nastat (a ani nenastane, o čemž jsem se přesvědčil přidáním destruktoru).
const(void*)this, tak kód funguje.
import std.stdio;
import core.thread;
//import wayland.callback;
class Callback
{
void delegate(uint) m_callback;
Callback m_next;
uint[] m_lotsOfData;
public this(void delegate(uint) cb)
{
writefln("Callback %s create", cast(void*)this);
m_lotsOfData = new uint[1024*1024*10]; // 40M
writefln("Callback %s alloc done", cast(void*)this);
m_callback = cb;
}
~this()
{
writefln("Callback %s destroy", cast(void*)this);
}
public void call(uint bla)
{
m_callback(bla);
}
}
class Bla
{
Callback m_callbacks;
Callback m_last;
public Callback createCallback(void delegate(uint) cb)
{
Callback ret = new Callback(cb);
if (m_last is null)
m_callbacks = ret;
else
m_last.m_next = ret;
m_last = ret;
return ret;
}
public Callback createCallback(void function(uint) cb)
{
return createCallback( (uint bla) { cb(bla); } );
}
public void run()
{
while (m_callbacks !is null)
{
Callback cb = m_callbacks;
m_callbacks = cb.m_next;
cb.m_next = null;
if (m_callbacks is null)
m_last = null;
cb.call(111);
}
}
}
Bla bla;
void proc(uint serial)
{
writeln("call");
Thread.sleep(dur!("msecs")(10));
bla.createCallback(&proc);
}
void main()
{
bla = new Bla();
bla.createCallback(&proc);
bla.run();
}
/*
Display display;
SyncCallback cb;
void proc(uint serial)
{
writeln("sync");
Thread.sleep(dur!("msecs")(10));
cb = display.sync(&proc);
}
void main()
{
display = new Display(null);
cb = display.sync(&proc);
while (true)
display.dispatch();
}
*/
Řešení dotazu:
Jseš si jistý, že třída v D bude binárně kompatibilní se třídou v C++? Já si myslím, že to zaručeno není:
http//www.digitalmars.com/d/1.0/class.html
The D compiler is free to rearrange the order of fields in a class to optimally pack them in an implementation-defined manner.
Možná to nefunguje z tohoto důvodu:
http://www.digitalmars.com/d/1.0/garbage.html
void* p; ... int x = cast(int)p; // error: undefined behavior
garbage collector v D takové přetypování nedovoluje udělat
Přečti si všechno, co se píše v tom odkazu. Je úplně jedno, jestli přetypováváš na int nebo na instanci nějaké třídy. Navíc garbage collector v D se může kdykoliv rozhodnout přesunout ten objekt v paměti jinam, takže jakýkoliv void pointer ztrácí platnost (což bude ten důvod, proč to padá):
A copying garbage collector can arbitrarily move objects around in memory
Možný workaround by byl získat pointer na referenci místo objektu, ale musel bys zajistit, že ta reference nezanikne a taky to není hezké řešení.
A copying garbage collector can arbitrarily move objects around in memoryTo zní docela zajímavě. Možná by Jardíkovi pomohl odkaz na nějaké howto jak předávat callbacky s odkazem na třídu, protože to při kombinování D a C musí být každodenní use case. Není něco takového? Přecijem je D novější jazyk než C a tudíž se dá počítat, že chce fungovat i ve stávajícím ekosystému.
// Typical C-style callback mechanism; the passed function
// is invoked with the user-supplied context pointer at a
// later point.
extern(C) void addCallback(void function(void*), void*);
// Allocate an object on the GC heap (this would usually be
)// some application-specific context data.
auto context = new Object;
// Make sure that it is not collected even if it is no
// longer referenced from D code (stack, GC heap, …).
GC.addRoot(cast(void*)context);
// Also ensure that a moving collector does not relocate
// the object.
GC.setAttr(cast(void*)context, GC.BlkAttr.NO_MOVE);
// Now context can be safely passed to the C library.
addCallback(&myHandler, cast(void*)context);
extern(C) void myHandler(void* ctx)
{
// Assuming that the callback is invoked only once, the
// added root can be removed again now to allow the GC
// to collect it later.
GC.removeRoot(ctx);
GC.clrAttr(ctx, GC.BlkAttr.NO_MOVE);
auto context = cast(Object)ctx;
// Use context here…
}
Tiskni
Sdílej: