Розробники дистрибутива 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 мс.



Джерело: opennet.ru
