He usado Lua extensamente en el pasado.
Luabind es realmente fácil de usar, no hay necesidad de un generador externo como SWIG, el documento es excelente. Los tiempos de compilación siguen siendo decentes.
El mayor problema que he visto: lua es principalmente ... de solo escritura. Realmente no tienes clases, pero solo las matrices asociativas con un poco de azúcar sintáctica (objeto ['clave'] pueden escribirse objeto.clave), por lo que fácilmente puedes agregar un 'miembro' en una función oscura, olvidarse por completo al respecto, y tener efectos secundarios más adelante.
Por esta razón, y solo por esta razón, preferiría Python. Boost :: Python es la base de Luabind, por lo que ambos tienen una API similar (Luabind solía ser un poco más fácil de construir, pero ya no). En términos de funcionalidad, son bastante equivalentes.
No está directamente relacionado: ninguno de estos se puede utilizar de forma fiable en un entorno multiproceso (por lo que esto depende de la complejidad de su servidor).
- N hilos de Python: el GIL (Global Interpreter Lock) está en camino. Cada vez que utiliza una variable en un hilo, está bloqueada, por lo que arruina el punto, excepto para operaciones de E/S largas y llamadas a funciones C.
- lua tiene corrutinas, pero no son paralelas.
- hilos Ruby no son realmente los hilos, pero similar a la co-rutinas de Lua
Tenga en cuenta que todavía se puede crear un environement para cada hilo, pero no será capaz de comunicarse (excepto con una maquinaria de C++) . Esto es especialmente fácil en Lua.
Si crees que Lua es demasiado simplista y Ruby demasiado difícil de integrar, ¿deberías considerar Python? – Macke
Si está exponiendo una base de código (especialmente un servidor) ¿realmente desea una biblioteca grande? Puede dedicar más esfuerzos a eliminar las características peligrosas de la biblioteca que los usuarios pueden explotar cuando se trata de sandboxing. –