En el sistema operativo del iPhone, mprotect() fallará si intenta usarlo para marcar las secciones grabables de la memoria como ejecutables. Esto rompe puentes como RubyCocoa (y probablemente MacRuby) que usan libffi para crear manejadores de métodos Objective-C en tiempo de ejecución. Creo que esto es por diseño porque no siempre fue el caso.
En última instancia, esto es más una cuestión de política de plataforma que tecnología, pero existe una solución técnica para esto. En lugar de generar manejadores de métodos personalizados en el tiempo de ejecución, precompile un conjunto de elementos reconfigurables que se asignan según sea necesario, lo que hace que el proceso de creación de puentes sea totalmente basado en datos. Hasta donde yo sé, esto aún no se está haciendo en RubyCocoa o MacRuby.
Otra cosa importante a tener en cuenta es que los tiempos de ejecución compilados de Ruby y RubyCocoa pueden ser significativamente mayores que las aplicaciones compiladas de Objective-C. Si estas bibliotecas estuvieran disponibles en el iPhone, esto no sería un problema, pero por ahora, incluso si RubyCocoa funciona, es posible que no desee utilizarlo para las aplicaciones que distribuye.
Apple solo re laxó las restricciones sobre herramientas de desarrollo para aplicaciones en la App Store: http://www.apple.com/pr/library/2010/09/09statement.html –
Hola, 3+ años después y hay un nuevo movimiento que intenta conseguir que Apple proporcione MacRuby para iOS :) Lea más al respecto aquí - http://welovemacruby.com/ y asegúrese de presentar el informe de error :) – gef
Es bueno ver, supongo que Apple está considerando MacRuby internamente –