В конце прошлого года вышел .NET5, который теперь кросс-платформенный, полностью открытый и независимый от Microsoft (по крайней мере формально). Да, теперь оно работает не только на Windows. Для справки: наиболее популярными языками для .NET являются C# и F#. Предельно упрощенная схема работы в .NET вот такая:
Код на C# -> CIL -> машинный кодCIL — это промежуточное представление, в которое сначала компилируются все .NET-языки. Фишка в том, что .NET умеет оптимизировать этот CIL и компилировать его в машинный код, в том числе и в режиме JIT.
Есть такой проект —
pyjion — который умеет конвертировать байт-код Python в CIL. Дальше хитрые механизмы .NET оптимизируют код и компилируют его на лету в эффективные машинные инструкции. А самая главная фишка — это не какой-то отдельный интерпретатор, это просто библиотека для ванильного CPython, так что весь ваш код должен работать точно так же. Всё, что нужно сделать — это установить на вашу машину .NET5 и добавить в начало программы (лучше даже до всех импортов) две строчки:import pyjionБабах! Дальше куски вашей программы будут в процессе выполнения компилироваться в машинные инструкции. Первый прогон кода может быть не таким быстрым из-за JIT-компиляции, зато последующие разы должны стать быстрее. На данный момент большого ускорения не обещают, но
pyjion.enable()
pyjion продолжает обрастать оптимизациями, специфичными для Python-кода, так что со временем получаемый машинный код будет более эффективным.Звучит невероятно круто, почитайте!
https://tonybaloney.github.io/posts/running-python-on-dotnet-5-with-pyjion.html
#pyjion #jit