Подтвердить что ты не робот

Запрещается ли использование JIT (точно в срок) скомпилированного кода в приложении iOS для AppStore?

Я слышал, что JIT-компилированный код не разрешен в iOS AppStore, потому что размещение исполняемого кода в куче запрещено. Это так? Или просто слух?

4b9b3361

Ответ 1

  • Устанавливаемый код не разрешен ( "или" - ключевое слово в 3.3.2). Все (кроме Javascript) должно быть статически связано.

  • JIT-компиляция в текст исходного кода Javascript представляется допустимой. (Не шутка, есть коммерческий компилятор, который делает это.) Компиляция в байт-код для исполнения интерпретатором, написанным Javascript и выполняемым в UIWebView, может смутить рецензентов, чтобы отклонить приложение, выполняющее это.

  • Песочница безопасности iOS, вероятно, убьет любое приложение, которое пытается перейти на любые динамически сгенерированные данные.

Ответ 2

JIT-компиляция в текст исходного кода Javascript, по-видимому, разрешена. (Не шутка, есть коммерческий компилятор, который делает это.) Компиляция в байт-код для выполнения...

Я также рассказал о компиляторе (не JIT, но реальном языке программирования), работающем на iOS. Моя идея заключалась в использовании адресов для ассемблерных функций, реализующих псевдокоды в качестве инструкций вместо "традиционного байт-кода" (1 байт на псевдо-код).

Один регистр ARM зарезервирован как "указатель кода" (здесь называется "rCP" ), указывающий на мой "байт-код". Последней инструкцией псевдоокодовой функции является "ldmfd rCP!, {pc}". Это означает, что последняя команда функции не является "возвратом", а переходит в следующий код операции.

Используя этот метод, вы получаете очень быстрый "байт-код". Может быть, коммерческий компилятор работает так. Я не могу поверить, что JIT-компилятор использует собственный код на iOS.

Ответ 3

Это правильно. Вы можете прочитать стандартное соглашение iOS, которое необходимо принять при настройке регистрации разработчиков:

3.3.2 Приложение не может загрузить или установить исполняемый код. Интерпретированный код может использоваться только в приложение, если все скрипты, код и переводчики упакованы в Приложение и не загружено. только исключение из вышеизложенного скриптов и кода, загруженных и выполняемых Встроенная в WebKit инфраструктура Apple.