SolveSpace (Wikipedie), tj. multiplatformní open source parametrický 2D/3D CAD, byl vydán v nové verzi 3.2. Přehled novinek v Changelogu na GitHubu. Vyzkoušet lze novou oficiální webovou verzi.
Organizátoři Dne IPv6, tradiční akce věnované tématům spojeným s tímto protokolem, vyhlásili Call for Abstracts. Na webu konference mohou zájemci přihlašovat příspěvky o délce 20 nebo 40 minut či 10minutové lighting talky a to až do 30. dubna. Tvůrci programu uvítají návrhy přednášek z akademického i komerčního sektoru, které mohou být technického i netechnického zaměření. Den IPv6 se letos uskuteční 4. června a místem konání bude i
… více »Euro-Office (Wikipedie) je evropský fork open source kancelářského balíku OnlyOffice. Za forkem stojí koalice firem IONOS, Nextcloud, Eurostack, XWiki, OpenProject, Soverin, Abilian a BTactic. Cílem je zajistit digitální suverenitu Evropy a snížit závislost na neevropských platformách. Projekt vznikl mimo jiné v reakci na nedávné uzavření cloudové služby OnlyOffice. OnlyOffice obviňuje Euro-Office z porušení licenčních podmínek. Na možné problémy upozorňuje i Collabora Online. Jednostranná změna licence není v pořádku.
Byly zpracovány a na YouTube zveřejněny videozáznamy jednotlivých přednášek z letošního Installfestu.
Během akce Arduino Days 2026 byl publikován Arduino Open Source Report 2025 (pdf) a oznámeno 7 nových produktů kompatibilních s deskou UNO Q (Arduino USB-C Power Supply, USB-C Cable, USB-C Hub, UNO Media Carrier, UNO Breakout Carrier, Bug Hopper, Modulino LED Matrix).
Google v pátek spustil v Česku Vyhledávání Live. Tato novinka umožňuje lidem vést plynulou konverzaci s vyhledávačem v češtině. A to prostřednictvím hlasu, nebo prostřednictvím toho, na co ukážou svým fotoaparátem či kamerou v mobilu. Rozšíření této multimodální funkce je možné díky nasazení Gemini 3.1 Flash Live, nového hlasového a audio modelu, který je od základu vícejazyčný, takže umožňuje lidem po celém světě mluvit na vyhledávač přirozeně a v jazyce, který je jim nejbližší.
Jsongrep je open-source nástroj, který efektivně prohledává JSON dokumenty (editovat je neumí). Kompiluje regulérní jazyk dotazu do podoby deterministického konečného automatu (DFA), díky čemuž prochází strom JSON dokumentu pouze jednou a je v tom tedy rychlejší než jiné nástroje jako jsou například jq, JMESPath nebo jql. Jsongrep je napsaný v programovacím jazyce Rust, zdrojový kód je dostupný na GitHubu.
O víkendu probíhá v Praze na Karlově náměstí 13 konference Installfest 2026. Na programu je celá řada zajímavých přednášek a workshopů. Vstup na konferenci je zcela zdarma, bez nutnosti registrace. Přednášky lze sledovat i online na YouTube.
Mozilla a společnost Mila oznámily strategické partnerství za účelem rozvoje open source a suverénní AI. Cílem je ukázat, že open source AI může konkurovat uzavřeným systémům. Obě organizace chtějí posílit technologickou suverenitu a snížit závislost na hrstce velkých technologických firem.
Adam Rice předvedl, že pomocí DNS lze distribuovat a spustit kompletní hru DOOM. Rozdělil WAD soubory a binárky do téměř 2000 DNS záznamů v Cloudflare zóně (jeden TXT záznam v DNS může nést okolo 2000 znaků textu). Ty pak stáhl PowerShellem, dekomprimoval a spustil přímo v paměti počítače bez nutnosti zápisu na disk, což prakticky dokazuje, že DNS může sloužit jako distribuované úložiště dat a možný kanál pro načítání kódu. Repozitář projektu je na GitHubu.
Odkazy
To že autor referenčnej implementácie pythonu si z výkonu ťažkú hlavu nerobí je vo všeobecnosti známe. Benchmarky referenčnej implementácie sú pomerne jednoznačné (škoda, že medzi benchmarky nechcú zaradiť PyPy). V dnešnom blogu sa pozrieme tak trochu na črevá PyPy, RPython (python ktorý je schopný bežať približene rovnako ako C program) a benchmarky s V8.
Python patrí medzi moje celkom obľúbené jazyky. Je známy tým, že vie všetko možné ale nič poriadne (presne ako ja). Má akési objekty, ale plnohodnotné OOP ako smalltalk to nie je. Má akési funkcie vyššieho rádu ale tail rekurziu nemá (druhý haskell to tiež nebude
). Referenčná implementácia je napísaná v C. Okrem referenčnej implementácie sa na internete povaľuje množstvo ďalších alternatívnych (jython, ironpython …).
Python patrí medzi interpretované jazyky. Zdrojové kódy majú príponu .py. Pri prvom spustení sa zvyčajne prekladajú do bytekódu (.pyc) vďaka čomu je štart programov v pythone pomerne rýchly (odpadáva fáza parsovania pri každom spustení).
V nie tak moc dávnych dobách zopár nadšencov napísalo interpret pythonu v pythone. Vďaka réžii pythonu boli programy bežiace v ňom asi 1000x pomalšie než programy bežiace v C-Pythone. Zatiaľ čo v začiatkoch bola táto implementácia absolútne najpomalšia dnes je zo skutočne kompatibilných implementácií najrýchlejšia (v benchmarkoch má v priemere 6,45-násobné zrýchlenie oproti CPythonu).
V súčasnosti sa PyPy skladá z dvoch hlavných komponentov - Python interpret napísaný v RPythone (čo je obyčajný python s pár obmedzeniami) a RPython prekladač (preklad na screenshote, do terminálu vykresľuje mandelbrotovú množinu), ktorý prekladá python do nízkoúrovňového jazyka. Dokáže zároveň automaticky generovať VM s JIT-om.
Pomocou PyPy toolchainu je možné veľmi jednoducho napísať vlastný interpretovaný jazyk a vygenerovať k nemu JIT kompilátor.
Obmedzenia, ktoré musí spĺňať RPython program vyplývajú zo spôsobu prekladu. Jedným z dôvodov prečo je python pomerne pomalý je jeho dynamickosť. V pythone je možné zapísať napr. a = 1; a = "text"; a bude to plne validný python kód. V RPythone sú typy statické a automaticky dedukované z kontextu (haskellisti s radosťou vysvetlia). V prípade nesprávneho použitia typov jednoducho program nepôjde skompilovať. Vďaka týmto vlastnostiam je možné generovať nízkoúrovňový kód s minimálnou réžiou písaný vo vysokoúrovňovom jazyku.
Na začiatok nudný neefektívny príklad:
Python
def fib(n):
if n <= 1: return n
else: return fib(n-2) + fib(n-1)
def main(argv):
n = int(argv[1])
print "fib of", n, "is", fib(n)
return 0
Javascript
function fib(n) {
if (n <= 1) {
return n;
}
else {
return fib(n-2) + fib(n-1);
}
}
console.log(fib(36));
C++
#include <iostream>
using namespace std;
ulong fib(ulong n) {
if (n <= 1) {
return n;
}
else {
return fib(n-2) + fib(n-1);
}
}
int main(int argc, char *argv[])
{
ulong n = atoi(argv[1]);
cout << "fib of " << n << " is " << fib(n);
return 0;
}
Kód pre python a rpython je identický, líši sa len v inicializačnom kóde:
if __name__ == "__main__":
import sys
main(sys.argv)
v štandardnom pythone vs. rpython:
def target(driver,args):
return main,None
| CPython | PyPy | V8 | RPython | C++ | |
|---|---|---|---|---|---|
| Čas | 16,817 s | 2,785 s | 0,830 s | 0,326 s | 0,172 s |
| Rozdiel oproti C++ | 98 x | 16 x | 4.8 x | 1.9 x | 1.0 x |
Na jednoduchom príklade je vidieť, že peniaze naliaté do V8 za niečo stáli
No dosť bolo hrania sa, poďme sa pozrieť na tieto benchmarky (je tam odkaz na zdrojáky). Zopár benchmarkov som upravil tak, aby fungovali aj pod rpythonom, zvyšok sa mi už nechcelo prepisovať, takže výsledky nie sú kompletné 
| Problém | CPython | PyPy | V8 | RPython |
|---|---|---|---|---|
| 1 | 383,9 us | 95,4 us | 352,5 us | 5,8 us |
| 2 | 36,6 us | 9,8 us | 20,9 us | 0,805 us |
| 3 | 1 227,2 us | 236,9 us | 167,3 us | 143,9 us |
| 4 | 546 650 us | 149 140 us | 598 210 us | 76 941 us |
| 5 | 32,90 us | 25,75 us | 5,15 us | 2,13 us |
| 6 | 2,2 us | 0,8 us | 0,1 us | 0,005 us |
| 7 | 205 070 us | 23 680 us | 58 020 us | 3 175 us |
| 8 | 2 882,10 us | 563,65 us | 1 570,90 us | 134,11 us |
| 9 | 116 120 us | 1 680 us | 1 130 us | 734 us |
| 10 | 1 314 900 us | 269 800 us | 571 540 us | 43 838 us |
| 13 | 270,8 us | 135,4 us | 1 678,6 us | |
| 15 | 9,7 us | 4,9 us | 3,6 us | |
| 16 | 392,6 us | 196,3 us | 86,9 us | |
| 18 | 432,1 us | 216,1 us | 275,3 us | |
| 19 | 503,5 us | 251,8 us | 63,8 us | |
| 20 | 229,7 us | 114,9 us | 1 804,7 us | |
| 24 | 39,8 us | 19,9 us | 13,1 us | |
| 28 | 1 948,2 us | 974,1 us | 19,7 us | |
| 40 | 84,3 us | 42,2 us | 12,9 us | |
| 45 | 4,1 us | 2,1 us | 0,1 us |
Mierne upravené zdrojáky tak aby išli pod rpythonom sú dostupné v mojom klone.
Z výsledkov je vidieť, že JIT v PyPy funguje diametrálne odlišne od V8. Nedá sa jednoznačne povedať, že niektorý z nich je rýchlejší / pomalší. Ak by mimochodom niekoho zaujímalo ako funguje V8 a prečo je delete príšerné pomalý tak tento blog je pre vás.
Samozrejme v priamom porovnaní medzi jazykmi so statickými typmi a dynamickými typmi je rozdiel vo výkone jednoznačný. Statické typy je však možné s určitými obmedzeniami dostať aj do jazyka ako je python a to bez akéhokoľvek písania hintov. Na podobnom princípe funguje aj typový systém haskellu.
Tiskni
Sdílej:
.
).
Na také bežné matematické blbnutie je python celkom rýchly. Numpy je pekne optimalizované, používa vektorové operácie a s pomerne rýchlym backendom je fakt super tam, kde sa python používa len ako lepidlo medzi knižnicami. Nedávno so sa tak dokonca hral s OpenCV a spracovaním videa, ale nakoniec som to aj tak prepísal do C++ (nie kvôli výkonu, ale ako príprava na jeden menší článok).
Ten thunk leak je jedna z vecí ktoré sa mi dosť na haskelli nepáčia (prekvapilo ma to u funkcií ako fold), ale vlastne to celkom vyplýva z lenivosti vykonávania.
Čo sa týka typov ... rpython (aspoň čo som si všimol) všetko kompletne prekladal na natívne typy, žiadne obaľovanie. Typ majú nie len premenné, ale aj polia (homogénne), tuple (pevná veľkosť, nemôže sa na jednom mieste vo funkcii vrátiť ("a", 1) a (1, "a"), položky musia mať rovnaký typ) ...
foldr negeneruje thunky, takze smysl ma psat jen striktni verzi foldl, pokud je potreba vyhodnocovat z leva.
Zavrhovat (TC) rekurzi je nesmysl, jen je potreba si uvedomit jaka struktura rekurzivnim volanim vznika a podle toho se zaridit - aplikaci striktniho vyhodnoceni na parametr(y) a/nebo v kombinaci s guard rekurzi.
Pokud k tomu neni hodne dobry duvod, tak je lepsi na vhodnych mistech vynutit predcasne vyhodnoceni nebo upravit algoritmus a vystacit si s vychozim stackem. Velkou cast optimalizace zvladne i prekladac GHC, ale nelze se spolehat ze vyresi veskery nevhodne napsany kod.
Má akési objekty, ale plnohodnotné OOP ako smalltalk to nie je.Konkrétně?
Nič to nemení na tom, že skutočné vynútené zapuzdrenie nemá.To ovšem tvůrce pythoních programů nijak neomezuje, naopak jim to umožňuje dělat věci, které by jinak dělat nemohli a nejspíše ani neměli. Ale to je obecná vlastnost pythonu, že součástí jeho návrhnu není ochrana proti nekompetentním programátorům. Nicméně tato vlastnost (volný přístup k privátním datům) lze podle mě implementovat i pro libovolný jiný jazyk a i se to tak pro účely debuggerů dělá. Stejnětak není problém přidat kompilátoru volbu, aby zapouzdření nevynucoval. Řešení, které používá python, vede k tomu, že se stírají technické rozdíly mezi standardním během, testováním a debugováním. Samozřejmě každá sranda něco stojí a toto rozhodnutí má i své nevýhody, jen podle mě nespočívají v tom, že by byl programátor jazykem nějak omezován.
Na druhou stranu tvrzení, že je RAII vlastností objektového paradigmatu podle mě narazí na to, že různí lidé chápou objektové paradigma různěPříkladně Alan Kay: OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things. Kde se v tom skrývá RAII fakt netuším.
RPython nie je moc známy pretože je to interný projekt PyPy určený na implementáciu interpretovaného jazyka. Ja som ho zneužil na trochu iné veci hlavne zo zvedavosti a chcel som ľuďom tak trochu predstaviť práve tento projekt lebo moc sa o ňom nepíše a pritom je to najrýchlejšia implementácia pythonu kde nie je potrebné zadávať hinty.
Samozrejme cython je vďaka kompilácii kritických častí rýchlejší len ... treba dopísať hinty a odekorovať.
bez toho, aniž byAle fuj.
). Dokaze optimalizovat jen podmnozinu pythonu, u cisel vetsich nez uint64 se stejne pouzije pythonni kod (ktery vola gmp) a pomale volani funkci a omezeni behu jen na jedno vlakno zustava. Ma smysl jen u omezenych pripadu pri vypoctech, ktere se pokud mozno provadi jen v ramci jedne fce/metody.
To uz je rozumnejsi misto CPythonu pouzit Jython nebo PyPy, ale co jsem mel moznost testovat, zatim o moc lepsi vysledky nedavaji, nekdy dokonce i horsi nez CPython. Dynamicke typovani ma proste svou dan, kterou nelze nezaplatit.