Vývoj programovacího jazyka Zig byl přesunut z GitHubu na Codeberg. Sponzoring na Every.
Stejně jako GNOME i KDE Plasma končí s X11. KDE Plasma 6.8 poběží už pouze nad Waylandem. Aplikace pro X11 budou využívat XWayland.
Poslanci Evropského parlamentu dnes vyzvali k výraznému zvýšení ochrany nezletilých na internetu, včetně zákazu vstupu na sociální sítě pro osoby mladší 16 let. Legislativně nezávazná zpráva, kterou dnes odsouhlasil Evropský parlament poměrem 493 hlasů pro ku 92 proti, kromě zavedení věkové hranice 16 let pro využívání sociálních sítí, platforem pro sdílení videí či společníků s umělou inteligencí (AI) vyzývá také k zákazu … více »
Doom v KiCadu nebo na osciloskopu? Žádný problém: KiDoom: Running DOOM on PCB Traces a ScopeDoom: DOOM on an Oscilloscope via Sound Card.
Po AlmaLinuxu byl v nové stabilní verzi 10.1 vydán také Rocky Linux. Přehled novinek v poznámkách k vydání.
Open source reimplementace počítačových her Tomb Raider I a Tomb Raider II spolu s dalšími vylepšeními a opravami chyb TRX byla vydána ve verzi 1.0. Jedná se o sloučení projektů / enginů TR1X a TR2X do jednoho TRX. Videoukázka na YouTube.
Společnost Seznam.cz spouští konverzační nástroj založený na umělé inteligenci Seznam Asistent. Asistent využívá vlastní jazykový model SeLLMa a dočasně i komerční modely od OpenAI provozované v evropských datacentrech prostřednictvím Microsoft Azure. Dlouhodobým cílem Seznamu je provozovat Asistenta výhradně na interních jazykových modelech a ve vlastních datových centrech.
Software LibrePods osvobozuje bezdrátová sluchátka AirPods z ekosystému Applu. Exkluzivní funkce AirPods umožňuje využívat na Androidu a Linuxu. Díky zdokumentování proprietárního protokolu AAP (Apple Accessory Protocol).
Byl vydán AlmaLinux OS 10.1 s kódovým názvem Heliotrope Lion. S podporou Btrfs. Podrobnosti v poznámkách k vydání.
Placená služba prohledávání zprostředkovatelů dat a automatického odstraňování uniklých osobních údajů Mozilla Monitor Plus bude 17. prosince ukončena. Bezplatná monitorovací služba Mozilla Monitor bude i nadále poskytovat okamžitá upozornění a podrobné pokyny k omezení rizik úniku dat. Služba Mozilla Monitor Plus byla představena v únoru loňského roku.
Google světu ukázal jazyk Dart, jehož účelem je nahradit JavaScript ve webových aplikacích. Veškeré informace a ukázky najdete na dartlang.org. Jazyk se dost podobá Javě, ale zachovává některé rysy JavaScriptu.
Tiskni
Sdílej:
Rozšiřitelnost není znásilňování.knihovna od zakladu prekopavajici cely jazyk za ucelem, aby se dal ten jazyk pouzivat k tomu, k cemu byl vubec navrzeny mi prijde opravdu trochu jako zvracenost a znasilneni
Jo, a největší prča na tom je, že ta knihovna nemění vůbec nic.to jo. mimochodem, osobne radsi preferuju dojo, prijde mi takove nejake civilizovanejsi.
Čekal bych, že zrovna ty budeš mít trochu pochopení, v JavaScriptu je pod pár vrstvami špíny a hnusu ukryté Scheme, které by mohly pochopit i masyano, jedna cast meho ja ocenuje, ze tam je opravdu schovany scheme, a ze JS zpristupnuje funkcionalni zpusob programovani i sirokym masam. ale ta druha cast meho ja, ktera v tom obcas musi neco programovat by autory specifikace i s implementatory vymachala v dehtu a peri a hnala je pres cele silicon valley.
Hello world v haxe zkompilovaný do JavaScriptu:
haxe
import js.Lib;
class Main
{
static function main()
{
Lib.alert("ahoj světe");
}
}
javascript
$estr = function() { return js.Boot.__string_rec(this,''); }
Std = function() { }
Std.__name__ = ["Std"];
Std["is"] = function(v,t) {
$s.push("Std::is");
var $spos = $s.length;
var $tmp = js.Boot.__instanceof(v,t);
$s.pop();
return $tmp;
$s.pop();
}
Std.string = function(s) {
$s.push("Std::string");
var $spos = $s.length;
var $tmp = js.Boot.__string_rec(s,"");
$s.pop();
return $tmp;
$s.pop();
}
Std["int"] = function(x) {
$s.push("Std::int");
var $spos = $s.length;
if(x < 0) {
var $tmp = Math.ceil(x);
$s.pop();
return $tmp;
}
var $tmp = Math.floor(x);
$s.pop();
return $tmp;
$s.pop();
}
Std.parseInt = function(x) {
$s.push("Std::parseInt");
var $spos = $s.length;
var v = parseInt(x,10);
if(v == 0 && x.charCodeAt(1) == 120) v = parseInt(x);
if(isNaN(v)) {
$s.pop();
return null;
}
var $tmp = v;
$s.pop();
return $tmp;
$s.pop();
}
Std.parseFloat = function(x) {
$s.push("Std::parseFloat");
var $spos = $s.length;
var $tmp = parseFloat(x);
$s.pop();
return $tmp;
$s.pop();
}
Std.random = function(x) {
$s.push("Std::random");
var $spos = $s.length;
var $tmp = Math.floor(Math.random() * x);
$s.pop();
return $tmp;
$s.pop();
}
Std.prototype.__class__ = Std;
IntIter = function(min,max) {
if( min === $_ ) return;
$s.push("IntIter::new");
var $spos = $s.length;
this.min = min;
this.max = max;
$s.pop();
}
IntIter.__name__ = ["IntIter"];
IntIter.prototype.min = null;
IntIter.prototype.max = null;
IntIter.prototype.hasNext = function() {
$s.push("IntIter::hasNext");
var $spos = $s.length;
var $tmp = this.min < this.max;
$s.pop();
return $tmp;
$s.pop();
}
IntIter.prototype.next = function() {
$s.push("IntIter::next");
var $spos = $s.length;
var $tmp = this.min++;
$s.pop();
return $tmp;
$s.pop();
}
IntIter.prototype.__class__ = IntIter;
Main = function() { }
Main.__name__ = ["Main"];
Main.main = function() {
$s.push("Main::main");
var $spos = $s.length;
js.Lib.alert("ahoj světe");
$s.pop();
}
Main.prototype.__class__ = Main;
if(typeof js=='undefined') js = {}
js.Lib = function() { }
js.Lib.__name__ = ["js","Lib"];
js.Lib.isIE = null;
js.Lib.isOpera = null;
js.Lib.document = null;
js.Lib.window = null;
js.Lib.alert = function(v) {
$s.push("js.Lib::alert");
var $spos = $s.length;
alert(js.Boot.__string_rec(v,""));
$s.pop();
}
js.Lib.eval = function(code) {
$s.push("js.Lib::eval");
var $spos = $s.length;
var $tmp = eval(code);
$s.pop();
return $tmp;
$s.pop();
}
js.Lib.setErrorHandler = function(f) {
$s.push("js.Lib::setErrorHandler");
var $spos = $s.length;
js.Lib.onerror = f;
$s.pop();
}
js.Lib.prototype.__class__ = js.Lib;
js.Boot = function() { }
js.Boot.__name__ = ["js","Boot"];
js.Boot.__unhtml = function(s) {
$s.push("js.Boot::__unhtml");
var $spos = $s.length;
var $tmp = s.split("&").join("&").split("<").join("<").split(">").join(">");
$s.pop();
return $tmp;
$s.pop();
}
js.Boot.__trace = function(v,i) {
$s.push("js.Boot::__trace");
var $spos = $s.length;
var msg = i != null?i.fileName + ":" + i.lineNumber + ": ":"";
msg += js.Boot.__unhtml(js.Boot.__string_rec(v,"")) + "<br/>";
var d = document.getElementById("haxe:trace");
if(d == null) alert("No haxe:trace element defined\n" + msg); else d.innerHTML += msg;
$s.pop();
}
js.Boot.__clear_trace = function() {
$s.push("js.Boot::__clear_trace");
var $spos = $s.length;
var d = document.getElementById("haxe:trace");
if(d != null) d.innerHTML = "";
$s.pop();
}
js.Boot.__closure = function(o,f) {
$s.push("js.Boot::__closure");
var $spos = $s.length;
var m = o[f];
if(m == null) {
$s.pop();
return null;
}
var f1 = function() {
$s.push("js.Boot::__closure@67");
var $spos = $s.length;
var $tmp = m.apply(o,arguments);
$s.pop();
return $tmp;
$s.pop();
};
f1.scope = o;
f1.method = m;
$s.pop();
return f1;
$s.pop();
}
js.Boot.__string_rec = function(o,s) {
$s.push("js.Boot::__string_rec");
var $spos = $s.length;
if(o == null) {
$s.pop();
return "null";
}
if(s.length >= 5) {
$s.pop();
return "<...>";
}
var t = typeof(o);
if(t == "function" && (o.__name__ != null || o.__ename__ != null)) t = "object";
switch(t) {
case "object":
if(o instanceof Array) {
if(o.__enum__ != null) {
if(o.length == 2) {
var $tmp = o[0];
$s.pop();
return $tmp;
}
var str = o[0] + "(";
s += "\t";
var _g1 = 2, _g = o.length;
while(_g1 < _g) {
var i = _g1++;
if(i != 2) str += "," + js.Boot.__string_rec(o[i],s); else str += js.Boot.__string_rec(o[i],s);
}
var $tmp = str + ")";
$s.pop();
return $tmp;
}
var l = o.length;
var i;
var str = "[";
s += "\t";
var _g = 0;
while(_g < l) {
var i1 = _g++;
str += (i1 > 0?",":"") + js.Boot.__string_rec(o[i1],s);
}
str += "]";
$s.pop();
return str;
}
var tostr;
try {
tostr = o.toString;
} catch( e ) {
$e = [];
while($s.length >= $spos) $e.unshift($s.pop());
$s.push($e[0]);
$s.pop();
return "???";
}
if(tostr != null && tostr != Object.toString) {
var s2 = o.toString();
if(s2 != "[object Object]") {
$s.pop();
return s2;
}
}
var k = null;
var str = "{\n";
s += "\t";
var hasp = o.hasOwnProperty != null;
for( var k in o ) { ;
if(hasp && !o.hasOwnProperty(k)) {
continue;
}
if(k == "prototype" || k == "__class__" || k == "__super__" || k == "__interfaces__") {
continue;
}
if(str.length != 2) str += ", \n";
str += s + k + " : " + js.Boot.__string_rec(o[k],s);
}
s = s.substring(1);
str += "\n" + s + "}";
$s.pop();
return str;
case "function":
$s.pop();
return "<function>";
case "string":
$s.pop();
return o;
default:
var $tmp = String(o);
$s.pop();
return $tmp;
}
$s.pop();
}
js.Boot.__interfLoop = function(cc,cl) {
$s.push("js.Boot::__interfLoop");
var $spos = $s.length;
if(cc == null) {
$s.pop();
return false;
}
if(cc == cl) {
$s.pop();
return true;
}
var intf = cc.__interfaces__;
if(intf != null) {
var _g1 = 0, _g = intf.length;
while(_g1 < _g) {
var i = _g1++;
var i1 = intf[i];
if(i1 == cl || js.Boot.__interfLoop(i1,cl)) {
$s.pop();
return true;
}
}
}
var $tmp = js.Boot.__interfLoop(cc.__super__,cl);
$s.pop();
return $tmp;
$s.pop();
}
js.Boot.__instanceof = function(o,cl) {
$s.push("js.Boot::__instanceof");
var $spos = $s.length;
try {
if(o instanceof cl) {
if(cl == Array) {
var $tmp = o.__enum__ == null;
$s.pop();
return $tmp;
}
$s.pop();
return true;
}
if(js.Boot.__interfLoop(o.__class__,cl)) {
$s.pop();
return true;
}
} catch( e ) {
$e = [];
while($s.length >= $spos) $e.unshift($s.pop());
$s.push($e[0]);
if(cl == null) {
$s.pop();
return false;
}
}
switch(cl) {
case Int:
var $tmp = Math.ceil(o%2147483648.0) === o;
$s.pop();
return $tmp;
case Float:
var $tmp = typeof(o) == "number";
$s.pop();
return $tmp;
case Bool:
var $tmp = o === true || o === false;
$s.pop();
return $tmp;
case String:
var $tmp = typeof(o) == "string";
$s.pop();
return $tmp;
case Dynamic:
$s.pop();
return true;
default:
if(o == null) {
$s.pop();
return false;
}
var $tmp = o.__enum__ == cl || cl == Class && o.__name__ != null || cl == Enum && o.__ename__ != null;
$s.pop();
return $tmp;
}
$s.pop();
}
js.Boot.__init = function() {
$s.push("js.Boot::__init");
var $spos = $s.length;
js.Lib.isIE = typeof document!='undefined' && document.all != null && typeof window!='undefined' && window.opera == null;
js.Lib.isOpera = typeof window!='undefined' && window.opera != null;
Array.prototype.copy = Array.prototype.slice;
Array.prototype.insert = function(i,x) {
$s.push("js.Boot::__init@205");
var $spos = $s.length;
this.splice(i,0,x);
$s.pop();
};
Array.prototype.remove = Array.prototype.indexOf?function(obj) {
$s.push("js.Boot::__init@208");
var $spos = $s.length;
var idx = this.indexOf(obj);
if(idx == -1) {
$s.pop();
return false;
}
this.splice(idx,1);
$s.pop();
return true;
$s.pop();
}:function(obj) {
$s.push("js.Boot::__init@213");
var $spos = $s.length;
var i = 0;
var l = this.length;
while(i < l) {
if(this[i] == obj) {
this.splice(i,1);
$s.pop();
return true;
}
i++;
}
$s.pop();
return false;
$s.pop();
};
Array.prototype.iterator = function() {
$s.push("js.Boot::__init@225");
var $spos = $s.length;
var $tmp = { cur : 0, arr : this, hasNext : function() {
$s.push("js.Boot::__init@225@229");
var $spos = $s.length;
var $tmp = this.cur < this.arr.length;
$s.pop();
return $tmp;
$s.pop();
}, next : function() {
$s.push("js.Boot::__init@225@232");
var $spos = $s.length;
var $tmp = this.arr[this.cur++];
$s.pop();
return $tmp;
$s.pop();
}};
$s.pop();
return $tmp;
$s.pop();
};
if(String.prototype.cca == null) String.prototype.cca = String.prototype.charCodeAt;
String.prototype.charCodeAt = function(i) {
$s.push("js.Boot::__init@239");
var $spos = $s.length;
var x = this.cca(i);
if(x != x) {
$s.pop();
return null;
}
$s.pop();
return x;
$s.pop();
};
var oldsub = String.prototype.substr;
String.prototype.substr = function(pos,len) {
$s.push("js.Boot::__init@246");
var $spos = $s.length;
if(pos != null && pos != 0 && len != null && len < 0) {
$s.pop();
return "";
}
if(len == null) len = this.length;
if(pos < 0) {
pos = this.length + pos;
if(pos < 0) pos = 0;
} else if(len < 0) len = this.length + len - pos;
var $tmp = oldsub.apply(this,[pos,len]);
$s.pop();
return $tmp;
$s.pop();
};
$closure = js.Boot.__closure;
$s.pop();
}
js.Boot.prototype.__class__ = js.Boot;
$_ = {}
js.Boot.__res = {}
$s = [];
$e = [];
js.Boot.__init();
{
String.prototype.__class__ = String;
String.__name__ = ["String"];
Array.prototype.__class__ = Array;
Array.__name__ = ["Array"];
Int = { __name__ : ["Int"]};
Dynamic = { __name__ : ["Dynamic"]};
Float = Number;
Float.__name__ = ["Float"];
Bool = { __ename__ : ["Bool"]};
Class = { __name__ : ["Class"]};
Enum = { };
Void = { __ename__ : ["Void"]};
}
{
Math.__name__ = ["Math"];
Math.NaN = Number["NaN"];
Math.NEGATIVE_INFINITY = Number["NEGATIVE_INFINITY"];
Math.POSITIVE_INFINITY = Number["POSITIVE_INFINITY"];
Math.isFinite = function(i) {
$s.push("js.Boot::__init");
var $spos = $s.length;
var $tmp = isFinite(i);
$s.pop();
return $tmp;
$s.pop();
};
Math.isNaN = function(i) {
$s.push("js.Boot::__init");
var $spos = $s.length;
var $tmp = isNaN(i);
$s.pop();
return $tmp;
$s.pop();
};
}
{
js.Lib.document = document;
js.Lib.window = window;
onerror = function(msg,url,line) {
var stack = $s.copy();
var f = js.Lib.onerror;
$s.splice(0,$s.length);
if( f == null ) {
var i = stack.length;
var s = "";
while( --i >= 0 )
s += "Called from "+stack[i]+"\n";
alert(msg+"\n\n"+s);
return false;
}
return f(msg,stack);
}
}
js.Lib.onerror = null;
Main.main()