Управление памятью Haskell в IOS 5

Я хочу встроить движок Haskell в проект IOS 5 как библиотеку C - запустить код Haskell внутри приложения IOS. Поэтому у меня есть несколько вопросов:

  • Есть ли известная проблема управления памятью, которую Haskell открывает в ARC?
  • Как я могу гарантировать, что Haskell не мешал управлению памятью IOS?
  • Что может быть эффективной стратегией для решения этих проблем?

Ответ 1

ARC - это процесс генерации кода времени компиляции, относящийся к коду Objective-C. ARC в основном означает "вставлять инструкции сохранения, выпуска и autorelease в источник * во время компиляции, чтобы программисту не приходилось".

Следовательно, ARC ничего не сделает с неъективным C-кодом (т.е. с обычными библиотеками C) и не имеет поведения во время выполнения **, которое может помешать работе с сборкой мусора для механизма Haskell.

* На самом деле, как работает ARC, он генерирует оптимизированный ассемблерный код, а не исходный код, но, как аналог, это хорошее описание того, как он работает.

** Строго говоря, неправда, что ARC не имеет поведения во время выполнения, поскольку во время выполнения есть слабое управление указателями, но опять же, что применяется только к объектам Objective-C и ничего не сделает с кодом Haskell.