Byla představena nová verze modelu Claude Opus 4.6 od společnosti Anthropic. Jako demonstraci možností Anthropic využil 16 agentů Claude Opus 4.6 k vytvoření kompilátoru jazyka C, napsaného v programovacím jazyce Rust. Claude pracoval téměř autonomně, projekt trval zhruba dva týdny a náklady činily přibližně 20 000 dolarů. Výsledkem je fungující kompilátor o 100 000 řádcích kódu, jehož zdrojový kód je volně dostupný na GitHubu pod licencí Creative Commons.
Kultovní britský seriál The IT Crowd (Ajťáci) oslavil dvacáté výročí svého prvního vysílání. Sitcom o dvou sociálně nemotorných pracovnících a jejich nadřízené zaujal diváky svým humorem a ikonickými hláškami. Seriál, který debutoval v roce 2006, si i po dvou dekádách udržuje silnou fanouškovskou základnu a pravidelně se objevuje v seznamech nejlepších komedií své doby. Nedávné zatčení autora seriálu Grahama Linehana za hatecrime však vyvolává otázku, jestli by tento sitcom v současné Velké Británii vůbec vznikl.
Společnost JetBrains oznámila, že počínaje verzí 2026.1 budou IDE založená na IntelliJ ve výchozím nastavení používat Wayland.
Společnost SpaceX amerického miliardáře Elona Muska podala žádost o vypuštění jednoho milionu satelitů na oběžnou dráhu kolem Země, odkud by pomohly zajistit provoz umělé inteligence (AI) a zároveň šetřily pozemské zdroje. Zatím se ale neví, kdy by se tak mělo stát. V žádosti Federální komisi pro spoje (FCC) se píše, že orbitální datová centra jsou nejúspornějším a energeticky nejúčinnějším způsobem, jak uspokojit rostoucí poptávku po
… více »Byla vydána nová verze 2.53.0 distribuovaného systému správy verzí Git. Přispělo 70 vývojářů, z toho 21 nových. Přehled novinek v poznámkách k vydání.
Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 216. sraz, který proběhne v pátek 20. února od 18:00 v Red Hat Labu (místnost Q304) na Fakultě informačních technologií VUT v Brně na ulici Božetěchova 1/2. Tématem srazu bude komunitní komunikační síť MeshCore. Jindřich Skácel představí, co je to MeshCore, předvede nejrůznější klientské zařízení a ukáže, jak v praxi vypadá nasazení vlastního repeateru.
Byla vydána nová major verze 9.0 multiplatformní digitální pracovní stanice pro práci s audiem (DAW) Ardour. Přehled novinek, vylepšení a oprav v poznámkách k vydání.
Hodnota Bitcoinu, decentralizované kryptoměny klesla pod 70 000 dolarů (1,44 milionu korun).
Valve z důvodu nedostatku pamětí a úložišť přehodnocuje plán na vydání zařízení Steam Controller, Steam Machine a Steam Frame: „Cílem tedy stále zůstává vydat všechna tři nová zařízení v první polovině letošního roku, ale přesná data a ceny jsou dvě věci, na kterých usilovně pracujeme a jsme si dobře vědomi toho, jak rychle se v tomto ohledu může vše změnit. Takže ač dnes žádné zveřejnitelné údaje nemáme, hned jak plány finalizujeme, budeme Vás informovat.“
Do 20. února lze hlasovat pro wallpapery pro Ubuntu 26.04 s kódovým názvem Resolute Raccoon.
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: