|
Разработчики дистрибутива Cutefish, развивающего одноимённую среду рабочего стола в стиле macOS, объявили о разработке прослойки Reef для запуска приложений macOS в Linux. Собранные для macOS программы устанавливаются из файлов в формате dmg и интегрируются с основным рабочим столом в Linux.
Приложения выполняются без эмуляторов, виртуальных машин и проприетарных компонентов macOS. Reef развивается с нуля без использования наработок проекта Darling и без обратного инжиниринга закрытого ПО Apple. В процессе разработки функциональность реализуется отталкиваясь от возможностей, необходимых для запуска конкретных приложений - разработчики пытаются запустить какую-то программу, выявляют неработающие функции и реализуют их. Код Reef пока не опубликован публично, но в скором времени прослойку обещают добавить в состав дистрибутива Cutefish.
Созданная проектом Cutefish прослойка насчитывает около 460 тысяч строк кода и использует более 80 внешних библиотек, среди которых компоненты macOS, поставляемые Apple под открытыми лицензиями, такие как Core Foundation (swift-corelibs-foundation), Grand Central Dispatch (swift-corelibs-libdispatch), стандартная библиотека языка Swift, библиотеки Libc, lzfse, objc4, компоновщик dyld и ядро xnu. В проекте также используются WebKit, LLVM libc++, libc++abi, libunwind, curl и Tcl. API Core Data реализован поверх SQLite, а графический API Metal поверх OpenGL. Предоставляется сетевой фреймворк, поддержка автосохранения окон и инерционная прокрутка в стиле macOS.
Из уже запускаемых поверх Reef программ отмечены RSS-ридер NetNewsWire, эмулятор терминала Ghostty, архиватор Keka, текстовые редакторы CotEditor и TextMate, календарь Itsycal, система заметок
Things 3 и тест Speedtest. При тестировании производительности, программы для macOS пока выполняются в несколько раз медленнее, например, исполняемый файл CotEditor для Linux запускается за 115 мс, а для macOS за 235 мc, различия во времени открытия файла с 20 тысячами строк составляют 0.12 сек. против 0.50 сек., реагирование на нажатие клавиши - 18 мс против 21 мс, а время отрисовки при прокрутке - 1.2 мс против 4.4 мс.
|