Già da tempo Hybris è dotato (o dotatA ?
) delle funzionalità necessarie per il loading dinamico delle librerie (i file .so su Linux e in futuro le .dll di Windowz), così ieri mi sono messo a lavoro per estendere il supporto anche alle funzioni che richiedono come parametri delle strutture.
Di conseguenza, ho creato una libreria di test (libtest.so) che esporta una funzione, il codice è il seguente :

Come si può evincere dal codice, la funzione ‘print_struct’ richiede come parametro un puntatore ad una variabile del tipo ‘test_struct_t’, ovvero una semplice struttura con un intero, una stringa e un double .
Ecco il codice hybris che creerà questa struttura, ne imposterà i valori, linkerà la funzione dalla libreria e la richiamerà correttamente (la prima parte del codice è semplicemente un test su puntatori, alias e reference) :

E naturalmente l’output è :
[evilsocket@masamune ~/Desktop/code/hybris] hybris examples/alias_as_ptr.hs numero : 123 (int) reference : 0x92E49E0 (alias) nuovo : 123 (int) test_struct_t::number : 123 test_struct_t::str : Hello World test_struct_t::dbl : 10.120000
Da qui, linkare le funzioni più usate nelle varie librerie di sistema e richiamarle con la giusta tipologia di dati strutturati è un attimo ^^ .
Inoltre, ho continuato a lavorare sul supporto per i socket (nel file netio.cc dei builtins), aggiungendo le funzioni ’server’ e ‘accept’ così da dotare il linguaggio di un minimo di funzionalità lato server … beh, ecco un echo server di esempio :

Già che c’ero ci ho buttato dentro il multi processo con fork che tanto era già implementato
a breve il supporto per i threads
(ovviamente POSIX).
Popularity: 9% [?]
No related posts.







Complimenti Evil, non mi finisci mai di stupirmi. Mi piacerebbe ribeccare te e Matrix… ti ricordi al LinuxDay?