Ho usato Lua ampiamente nel passato.
Luabind è davvero facile da usare, non c'è bisogno di un generatore esterno come SWIG, il doc è ottimo. I tempi di compilazione rimangono decenti.
Il più grande problema che ho visto: lua è principalmente ... di sola scrittura. In realtà non hai classi, ma solo array associativi con un po 'di zucchero sintattico (oggetto [' chiave '] può essere scritto object.key), così puoi facilmente aggiungere un' membro 'in una funzione oscura, completamente dimenticare su di esso, e hanno effetti collaterali più tardi.
Per questo motivo, e solo per questo motivo, preferirei Python. Boost :: Python è la base di Luabind, quindi entrambi hanno un'API simile (Luabind era leggermente più semplice da compilare ma non più). In termini di funzionalità, sono abbastanza equivalenti.
Non correlato direttamente: nessuno di questi può essere utilizzato in modo affidabile in un ambiente con multithreading (quindi ciò dipende dalla complessità del server).
- N thread Python: il GIL (Global Interpreter Lock) è sulla buona strada. Ogni volta che si utilizza una variabile in una discussione, è bloccata, quindi rovina il punto, ad eccezione delle lunghe operazioni di I/O e delle chiamate alle funzioni C.
- lua ha coroutine, ma non sono parallelizzabili.
- discussioni di Ruby non sono realmente le discussioni, ma simile a coroutine di Lua
Si noti che è comunque possibile creare un environement per ogni thread, ma non sarà in grado di comunicare (se non con un macchinario C++) . Questo è particolarmente facile a Lua.
Se pensi che Lua sia troppo semplicistica e Ruby troppo difficile da integrare, forse dovresti considerare Python? – Macke
Se stai esponendo una base di codice (specialmente un server) vuoi davvero una grande libreria? Puoi dedicare più tempo a rimuovere le pericolose funzionalità della libreria che gli utenti possono sfruttare quando si tratta di sandboxing. –