Mmmm allora allora allora, nonostante siano passati solo alcuni giorni dal mio ultimo intervento, di cambiamenti e soprattutto migliorie Hybris ne ha subiti tantissimi, quasi non so da dove cominciare (ammesso che interessi a qualcuno, lol XD), quindi vediamoli uno alla volta.
More…
Popularity: 6% [?]
E’ passato un bel po da quando ho scritto la primissima stesura della documentazione di Hybris e man mano che aumentavano i contenuti mi sono reso conto che una semplice pagina non era più sufficiente per contenerla tutta in modo ordinato e facilmente comprensibile.
Così ho installato un wiki e copiato tutta la documentazione al suo interno, migliorando e correggendo qua e la ed inserendo nuove sezioni.
More…
Popularity: 6% [?]
No, non ho inserito un motore di ricerca dentro Hybris (sarebbe figo però vero? XD) !
Mi spiego … profilando un po l’interprete, mi è parso evidente che una delle funzioni che veniva richiamata più spesso durante l’esecuzione di uno script, come è facile immaginare, è quella per il look up delle variabili in memoria.
In pratica è la funzione che, dato il nome di una variabile (quindi una chiave), deve trovare l’oggetto associato all’interno del’array associativo che rappresenta la memoria virtuale di Hybris .
Così ho pensato a come ottimizzare l’algoritmo di ricerca, che prima si limitava a scorrere l’array contemporaneamente dall’inizio verso la fine e dalla fine verso l’inizio (in realtà un espediente abbastanza inutile quando ci sono poche variabili, ma quando sono molte si fa sentire) e ho capito che mi conveniva utilizzare una hash table .
Questo tipo di struttura è tanto efficiente quanto difficile da realizzare e, pensando che avrei impiegato giorni, se non settimane, per buttare giù un implementazione ottimizzata al massimo, mi son messo a cercare online se ne esistevano già di pronte e soprattutto di facilmente integrabili con quanto scritto fin’ora .
E che ti vado a scoprire?
More…
Popularity: 8% [?]
Ebbene si, siamo vicinissimi alla 1.0 e di conseguenza abbiamo deciso di aprire un forum di supporto per Hybris .
Speriamo che questo serva sia a noi sviluppatori come “base logistica” per organizzarci meglio, sia per gli utenti al fine di trovare un luogo nel quale poter chiedere consigli ed eventualmente proporre idee per quanto riguarda il mondo della programmazione in Hybris .
Riporto quello che dice il post sticked “Informazioni sul forum” :
Questo è un forum di supporto e sviluppo per il linguaggio di programmazione Hybris .
E’ diviso in sotto sezioni, ognuna delle quali con un preciso intento ed un altrettanta precisa tematica, tematica che in nessun modo si può prescindere (leggere: “vietato offtopic”).
Al fine di un corretto utilizzo dei servizi del forum, ogni utente è pregato di ragionare bene sulla natura della propria domanda prima di postarla, possibilmente facendosi le seguenti domande :
- Ho cercato bene nella documentazione prima di fare questa domanda?
- Se la domanda riguarda un problema di compilazione dei sorgenti di Hybrys, sono sicuro di aver installato tutte le dipendenze?
- Sto per postare nella sezione giusta o forse un altra sarebbe più appropriata?
Fatte queste domande, sentitevi liberi di postare qualsiasi dubbio, domanda e/o suggerimento riguardanti Hybris, tenendo presente che questo forum non serve per socializzare e/o chiacchierare, ma come detto all’inizio di questo post serve come base logistica per il team di sviluppo.
Popularity: 6% [?]
Come detto nell’ultimo articolo, negli ultimi commit di Hybris è stato inserito un garbage collector strutturato in modo tale da districarsi al meglio tra le varie ricorsioni e i vari deliri di allocazione nell’interprete .
Nell’articolo avevo anche detto che questo sistema, nonostante avesse il vantaggio di diminuire drasticamente l’utilizzo della memoria durante l’esecuzione di uno script, aveva lo svantaggio di diminuire anche le prestazioni complessive dato com’era strutturato l’algoritmo per determinare se un dato oggetto era deallocabile durante l’esecuzione dello script stesso, algoritmo che effettuava diversi controlli, tra i quali due loop (quelli che rappresentavano maggiormente il collo di bottiglia) sul frame della funzione chiamante e su quello della memoria principale.
Ebbene, sono un coglione XD .
Si avete letto bene, sono un coglione perchè avevo strutturato l’algoritmo ragionando “a posteriori” senza pensare che prevenendo questo controllo si poteva risolvere il problema ed aumentare anche le prestazioni rispetto a prima .
More…
Popularity: 6% [?]
Uno dei problemi che affliggeva Hybris sin dalla primissima release era il problema dell’utilizzo/spreco di memoria .
Chi si è cimentato nella lettura del codice, avrà probabilmente notato che nella funzione htree_execute , quella che in pratica deve eseguire l’alberazione del programma parserizzato, non venivano de allocati gli oggetti “deallocabili” .
Questo avveniva per due ragioni principali :
- Essendo una funzione fortemente ricorsiva, non si poteva stabilire a priori se un dato oggetto sarebbe stato necessario ad una ricorsione successiva od alla ricorsione “chiamante”.
- Data la forte generalizzazione della classe “Object“, non era facile stabilire a priori quali tipi di oggetto era possibile deallocare e quali no.
More…
Popularity: 8% [?]
Finalmente Hybris supporta gli autotools grazie al lavoro svolto da merlok sul configure.ac e il mio sui Makefile.am.
Di conseguenza la procedura di compilazione ora è :
./autogen.sh
./configure
make
sudo make install
More…
Popularity: 5% [?]
17
mar
Da qualche tempo son cominciate ad uscire le alpha release di Ubuntu Lucid Lynx e, in perfetta sincronia, una mandria inbufalita di pseudo smanettoni ha iniziato ad installarsi queste versioni, per definizione instabili ed incomplete, vuoi per la smania di “avere l’ultimo tweak”, vuoi per curiosità, vuoi (in pochissimi casi) per testare il sistema e riportare i bug al team di sviluppo.
Poco male penso, in fondo come ho spesso affermato il bacino di utenza di un progetto open source è il suo tesoro più grande, tesoro che migliora e velocizza lo sviluppo e l’individuazione/risoluzione delle imperfezioni.
Ma poi cosa è successo?
Nel giro di pochi giorni mi son trovato nei feed un quadrilione di articoli provenienti dai blog più disparati di utenti che si lamentavano di queste release … e per cosa?
Per i nuovi driver aperti nVidia che non vanno ancora bene? Per il complessivo rallentamento del sistema? Per l’instabilità di un prodotto che per definizione DEVE essere instabile?!?!?
Noooooo! Ebbene, nonostante i changelogs kilometrici di queste nuove release, tutti quanti sono interessati solo ed unicamente ad un aspetto :
!!! Le nuove icone, il nuovi temi gtk, la nuova disposizione dei pulsanti ed il nuovo font del logo di Ubuntu !!!
More…
Popularity: 10% [?]
Finalmente questa sera ho trovato il tempo e l’ispirazione necessari per riprendere lo sviluppo di Hybris e, per quanto la sessione odierna di sviluppo non sia stata lunghissima (dovevo stendere i panni e fare una seconda lavatrice, lol) ha portato i suoi frutti e qualche spunto per il futuro.
Il changelog di questa nuova minor release comporta :
- Ho aggiunto il file CHANGELOG al repo su github tanto per tener traccia dei cambiamenti consistenti.
- Cambiata l’estensione degli script da hs a hy, per non creare confusione con i sorgenti Haskell, come suggerito da un amico.
- Migliorato il parsing degli argomenti della riga di comando e rimosso del codice inutile.
- Implementato la lettura ed esecuzione del codice anche dallo standard input (figo eh!).
- Sistemati i permessi di alcuni file che per una motivazione che mi sfugge erano tutti a +x O_o.
- Migliorato tantissimo il Makefile e separato il Makefile per i builtins.
More…
Popularity: 5% [?]
Dato il downtime di oggi e la relativa risoluzione, colgo l’occasione per scrivere un breve articolo su come risolvere i seguenti tipi di situazione :
- O caxxo! Ho sputtanato i privilegi sulle tabelle e ora non riesco più a loggarmi su mysql con nessun utente!
- O caxxo! Ho dimenticato la password dell’utenza di mysql!
In entrambi i casi, le parole “O caxxo” riassumono bene lo stato d’animo del povero mal capitato, stato d’animo che conosco benissimo perchè mi è capitato più di una volta (in particolare il caso 1) e, finchè non ho scoperto il trucchetto magico che sto per esporvi, mi ha fatto passare minuti bruttissimi .
More…
Popularity: 9% [?]