Java 21 является LTS-релизом, а значит у него будут выходить обновления как минимум 5 лет с момента выхода.
Читать полностью »
Рубрика «ffi»
Вышла Java 21
2023-09-19 в 14:43, admin, рубрики: collections, concurrency, ffi, java21, JDK, jep, jvm, loom, oracle, pattern matching, string interpolation, vector api, virtual threads, zgcКомпилируем быстрые консольные .exe приложения на PHP 8.1 в 2023 году, а почему бы и нет?
2023-03-13 в 8:01, admin, рубрики: c++, dll, enigma, exe, ffi, jit, php, PHP 8, timeweb_статьи, WinAPI, Блог компании Timeweb Cloud, интерпретатор, компиляция, консоль, приложение, разработка под windows, утилита, франкенштейнУ многих в своё время, наверное, было желание легкого написание консольных и оконных приложений. Ребята рунета иногда писали незаменимые приложения для решения мелких задач и делились на форумах, хотя некоторые из них и содержали костыли.
Однако времена меняются, и люди начали осознавать свои ошибки, переходя, скажем, на ООП.
Чтобы поностальгировать и продемонстрировать нового Франкенштейна, мы соберем полноценное консольное exe-приложение на PHP.Читать полностью »
Встраиваем Lua в PHP через FFI
2022-08-23 в 15:28, admin, рубрики: Extensions, ffi, kphp, Lua, open source, php, plugins, Блог компании VK, системное программированиеForeign Function Interface — это перспективная альтернатива для традиционных PHP-расширений.
Сегодня мы будем разбирать FFI-библиотеку для работы с liblua5 из PHP, которая позволит исполнять скрипты на Lua из нашего приложения.
Генерируем Rust обёртку для FMOD
2022-03-20 в 11:21, admin, рубрики: ffi, fmod, pest, Rust, Программирование, разработка игрОбёртку можно написать вручную, когда API состоит из небольшого количества функций и сигнатура этих функций меняется нечасто. FMOD — звуковой движок с большим количеством функций, точно не тот случай:
Types: 19
Callbacks: 96
Structures: 57
Structure Fields: 352
Enumerations: 77
Enumeration Variants: 693
Functions: 573
Function Arguments: 1590
Стоимость ручной разработки обёртки для такого API будет высокой, поддержка при каждом обновлении мучительной, не говоря уже об ошибках и опечатках, которые появятся в процессе редактирования.
Используем SQLite в KPHP и PHP через FFI
2022-03-11 в 14:53, admin, рубрики: ffi, kphp, ksqlite, open source, php, sqlite, Программирование, Разработка веб-сайтов
Сегодня я расскажу о новой библиотеке, которая позволяет использовать SQLite сразу из PHP и KPHP.
Создавать FFI пакеты — не просто. Под катом будут ответы на следующие вопросы:
- Как упростить установку и сделать библиотеку кроссплатформенной?
- Как не допустить утечек ресурсов?
- Как сделать библиотеку совместимой с KPHP и PHP?
- Какова производительность FFI решений?
Мы не только попробуем новую библиотеку в действии, но и выработаем ряд практик, которые при широком распространении могут улучшить ситуацию с FFI пакетами в сообществе.
Создаём игру на KPHP с помощью FFI и SDL
2021-11-23 в 10:18, admin, рубрики: ffi, Gamedev, kphp, open source, php, sdl, sdl2, Блог компании VK, Программирование, разработка игрKPHP теперь поддерживает механизм Foreign Function Interface (FFI). Мы с Владом решили продемонстрировать его возможности и за сутки написали первую в мире графическую игру на KPHP.
Игру делали с использованием библиотеки SDL:
- работали со звуком,
- обрабатывали события клавиатуры,
- рисовали шрифты, спрайты, UI.
API и семантика нашего FFI идентичны PHP. Поэтому созданная игра запустится и на KPHP, и на PHP.
Если вам интересны детали реализации, заглядывайте под кат!
Самое интересное в PHP 8
2019-12-19 в 10:02, admin, рубрики: ffi, jit, opcache, php, PHP 8, phprussia, preloading, Zend Framework, Блог компании Конференции Олега Бунина (Онтико), высокая производительность, Программирование, СиPHP 7.4 только-только объявлена stable, а нам уже подавай еще больше усовершенствований. И лучше всех о том, что ждет PHP, может рассказать Дмитрий Стогов — один из ведущих разработчиков Open Source PHP и, наверное, старейший активный контрибьютор.
Все доклады Дмитрия только о тех технологиях и решениях, над которыми он работает лично. В лучших традициях Онтико под катом текстовая версия рассказа о самых интересных с точки зрения Дмитрия нововведениях PHP 8, которые могут открыть новые use-case-ы. В первую очередь JIT и FFI — не в ключе «потрясающих перспектив», а с подробностями реализации и подводными камнями.
Для справки: Дмитрий Стогов познакомился с программированием в 1984, когда еще далеко не все из читателей появились на свет, и успел внести существенный вклад в развитие инструментов разработки, и PHP в частности (хоть Дмитрий повышает производительность PHP не специально для российских разработчиков, они выразили свою благодарность в виде Премии HighLoad++). Дмитрий автор Turck MMCache для PHP (eAccelerator), майнтейнер Zend OPcache, лидер проекта PHPNG, легшего в основу PHP 7, и лидер разработки JIT для PHP.
Читать полностью »
Как не переписать проект на Rust
2019-11-09 в 22:59, admin, рубрики: C, chm, chmlib, ffi, Rust, библиотека, обертка, портирование, ПрограммированиеКак только вы переступаете через болевой порог Борроу-Чекера и осознаёте, что Rust позволяет вытворять невообразимые (и порой опасные) в других языках вещи, вас может постигнуть настолько же непреодолимое желание Переписать Всё на Rust. Хоть и в лучшем случае это банально непродуктивно (бессмысленное разбазаривание усилий на несколько проектов), а в худшем — приводит к уменьшению качества кода (ведь с чего вы считаете себя более опытным в области применения библиотеки, чем её изначальный автор?)
Гораздо полезнее будет предоставить безопасный интерфейс для оригинальной библиотеки, повторно используя её код.
FFI: пишем на Rust в PHP-программе
2019-09-01 в 12:05, admin, рубрики: ffi, php, Rust, Программирование, Разработка веб-сайтовВ PHP 7.4 появится FFI, т.е. можно подключать библиотеки на языке C (или, например, Rust) напрямую, без необходимости писать целый extension и разбираться в его многочисленных нюансах.
Давайте попробуем написать код на Rust, и используем его PHP-программе
Когда вызовы функций через внешний интерфейс быстрее нативных вызовов C
2018-06-04 в 13:29, admin, рубрики: C, ffi, GOT, jit-компиляция, Lua, luajit, PLT, ПрограммированиеДополнено: хорошая дискуссия на Hacker News
Дэвид Ю на GitHub разработал интересный тест производительности для вызовов функций через разные внешние интерфейсы (Foreign Function Interfaces, FFI).
Он создал файл общего объекта (.so
) с одной простой функцией C. Затем написал код для многократного вызова этой функции через каждый FFI с измерением времени.
Для C «FFI» он использовал стандартную динамическую компоновку, а не dlopen()
. Это различие очень важно, так как действительно сказывается на результатах теста. Можно спорить, насколько честно такое сравнение с фактическим FFI, но всё равно его интересно измерить.
Самый удивительный результат бенчмарка — то, что FFI от LuaJIT существенно быстрее, чем C. Он примерно на 25% быстрее, чем нативный вызов C для функции общего объекта. Как смог слабо и динамически типизированный скриптовый язык обогнать в бенчмарке C? Точен ли результат?
Читать полностью »