haxelib run не может начать новые темы? - PullRequest
0 голосов
/ 08 мая 2018

Я получаю исключение при попытке использовать haxelib run команду в моем тесте Haxelib:

haxelib run haxelib-test

D: \ HaxeToolkit \ haxe \ std / neko / vm / Thread.hx: 54: символы 20-71: не удается создать поток из макроса

Без потоков все работает нормально.

Код Haxe:

import neko.vm.Thread;

class Main {
    static function main() {
        trace("starting");
        var commandsThread = Thread.create(read);
        trace("ending");
    }

    static function read() {
        trace("new thread");
    }
}

Мой haxelib.json выглядит так:

{
    "name": "haxelib-test",
    "license": "MIT",
    "tags": [],
    "description": "",
    "version": "0.0.1",
    "classPath": "src/",
    "main": "Main"
}

1 Ответ

0 голосов
/ 08 мая 2018

Из документов Haxelib , на которые вы ссылались:

Библиотеки с помощником run.n или основным классом, определенным в haxelib.json, могут быть выполнены с использованием haxelib run.

Поскольку вы предоставляете класс main, Haxelib пытается запустить ваш код во встроенном интерпретаторе макросов Haxe, используя аргумент --interp.

Интерпретатор макросов в Haxe 3 не поддерживает многопоточность, поэтому возникла ошибка. Вы можете обойти это, скомпилировав файл run.n и упаковав его в свою библиотеку, чтобы скрипт выполнялся в Neko VM:

haxe -main Main -neko run.n

Haxe 4 представила поддержку потоков для своего нового интерпретатора макросов под названием "Eval" в выпуске preview.5. Начиная с этой версии, вы можете использовать eval.vm.Thread. Тем не менее, обратите внимание, что из-за этого ваша команда Haxelib run не будет работать для людей, использующих более старые версии Haxe. Так что, если вы хотите максимальной совместимости, остановитесь на Neko.

...