Microsoft vydal novou velkou aktualizaci 2404.23 v září 2019 pod licencí SIL Open Font License (OFL) zveřejněné rodiny písma Cascadia Code pro zobrazování textu v emulátorech terminálu a vývojových prostředích.
OpenTofu, tj. svobodný a otevřený fork Terraformu vzniknuvší jako reakce na přelicencování Terraformu z MPL na BSL (Business Source License) společností HashiCorp, bylo vydáno ve verzi 1.7.0. Přehled novinek v aktualizované dokumentaci. Vypíchnout lze State encryption.
Spouštět webový prohlížeč jenom kvůli nákupu kávy? Nestačí ssh? Stačí: ssh terminal.shop (𝕏).
Yocto Project byl vydán ve verzi 5.0. Její kódové jméno je Scarthgap. Yocto Project usnadňuje vývoj vestavěných (embedded) linuxových systémů na míru konkrétním zařízením. Cílem projektu je nabídnou vývojářům vše potřebné. Jedná se o projekt Linux Foundation.
Operační systém 9front, fork operačního systému Plan 9, byl vydán v nové verzi "do not install" (pdf). Více o 9front v FQA.
Svobodná webová platforma pro sdílení a přehrávání videí PeerTube (Wikipedie) byla vydána v nové verzi 6.1. Přehled novinek i s náhledy v oficiálním oznámení a na GitHubu. Řešeny jsou také 2 bezpečnostní chyby.
Lennart Poettering na Mastodonu představil utilitu run0. Jedná se o alternativu k příkazu sudo založenou na systemd. Bude součástí systemd verze 256.
Hudební přehrávač Amarok byl vydán v nové major verzi 3.0 postavené na Qt5/KDE Frameworks 5. Předchozí verze 2.9.0 vyšla před 6 lety a byla postavená na Qt4. Portace Amaroku na Qt6/KDE Frameworks 6 by měla začít v následujících měsících.
Byla vydána nová verze 2.45.0 distribuovaného systému správy verzí Git. Přispělo 96 vývojářů, z toho 38 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání. Vypíchnout lze počáteční podporu repozitářů, ve kterých lze používat SHA-1 i SHA-256.
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:
haxeimport 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()