Про Parall

Навіщо існує Parall, як працюють його пакети ярликів і які технічні рішення стоять за локальним приватним дизайном.

Оригінальна розробка для macOS

Створено завдяки дослідженню, а не готовому рецепту

Ядро Parall неможливо було зібрати за загальнодоступною документацією, адже поведінку застосунків, від якої воно залежить, не задокументовано. Воно виросло з багаторічної зворотної інженерії архітектури застосунків macOS, перевірки окремих застосунків і постійного вдосконалення механізму на основі того, що справді працює.

Недокументовану поведінку досліджено безпосередньо

Профілі сумісності Parall створюються зі спостережень за тим, як кожен цільовий застосунок запускається, зберігає дані, працює з окремими процесами та взаємодіє з Dock. Коректна робота ярликів під час запуску через Spotlight, Raycast і Alfred також є результатом цієї зворотної інженерії. Ця робота триває, оскільки macOS і застосунки продовжують змінюватися.

Більше, ніж скрипт або копія застосунку

Скрипт іноді може запустити ще один процес. Parall розв’язує складніше завдання, надаючи підтримуваним екземплярам власну придатну до роботи ідентичність і поведінку в Dock, а там, де це дозволяє цільовий застосунок, окремі дані, облікові записи, профілі й налаштування зі збереженням зв’язку з оригінальним застосунком.

Оригінальний застосунок зберігає кодовий підпис і можливість оновлення

Parall ніколи не змінює цільовий застосунок і не фіксує його на одній версії. Кожен ярлик надалі запускає встановлений оригінальний застосунок, зберігаючи його кодовий підпис і можливість роботи вбудованого механізму оновлення. Після оновлення застосунку кожен ярлик використовує нову версію, щойно його перезапустять. Це важливо, бо оновлення застосунків часто виправляють вразливості безпеки.

Без приватних API та змін застосунків

Результати дослідження визначають, як Parall налаштовує стандартні механізми запуску macOS. Parall не використовує приватні API, не вбудовує сторонній код, не змінює наявний код і не модифікує macOS чи оригінальний застосунок.

У результаті маємо оригінальну інженерну роботу, виконану людиною. Ihor July проєктує, програмує, тестує й підтримує механізм Parall, а не генерує його із запиту до ШІ чи копіює із загальнодоступного рецепта.

Інша архітектура

Чому Parall не копіює й не перепаковує програми

Багато обхідних рішень для запуску кількох екземплярів дублюють пакет цільової програми, змінюють його ідентичність і повторно підписують. Parall натомість запускає оригінальну встановлену програму через окремий ярлик. Він ніколи не змінює, не перепаковує та не підписує повторно цільовий пакет.

Предмет порівняння Поширений підхід із копіюванням і перепакуванням Parall
Пакет цільової програми Створює другу копію, змінює її вміст або ідентичність пакета й може перепакувати її знову. Залишає встановлену цільову програму без змін і запускає її оригінальний виконуваний файл через окремий ярлик.
Підпис і безпека Зміна підписаного пакета робить оригінальний підпис розробника недійсним. Повторне підписування створює копію з іншим підписом і може змінити або видалити права, поведінку пісочниці та інші засоби захисту. Зберігає підпис розробника, пісочницю, права та засоби безпеки цільової програми, оскільки її пакет ніколи не змінюється.
Нативні служби програми Зміни ідентичності, підпису або прав можуть порушити роботу пов'язаних із ними служб, зокрема груп В'язки ключів, ключів доступу, ідентичності push-сповіщень, повернень авторизації та очікувань механізму оновлення. Не позбавляє цільову програму її початкових можливостей, оскільки й надалі запускає її підписаний пакет. Окремі служби все одно залежать від цільової програми та macOS. Відомі обмеження кількох екземплярів описані у частих запитаннях.
Оновлення Скопійована або перепакована збірка може випасти з оригінального шляху оновлення й залишатися на старій версії, доки її не створять заново або не замінять. Зберігає роботу оригінального шляху оновлення. Після оновлення цільової програми кожен ярлик Parall використовує нову версію під час наступного запуску.
Залежності Може залежати від скриптів, ручних кроків підписування або допоміжних засобів, отриманих поза програмою. Основна програма Parall є самодостатньою, працює в пісочниці й розповсюджується через Mac App Store. Завантаження допоміжного засобу чи фоновий демон не потрібні.

Чому важливо зберігати оновлення

Оновлення часто виправляють уразливості безпеки. Інструменти штучного інтелекту та розробки, що швидко змінюються, як-от Codex і Claude, можуть часто отримувати важливі виправлення. Водночас дослідження безпеки за допомогою ШІ прискорює виявлення вразливостей. Актуальне програмне забезпечення є важливим рівнем захисту поряд із захистом від шкідливих програм та іншими засобами безпеки.

Створено для Mac App Store

Процес створення ярликів Parall спроєктовано так, щоб основна програма могла залишатися в пісочниці й розповсюджуватися через Mac App Store без зовнішнього допоміжного засобу. Створення та запуск працюють локально й без інтернету. Необов'язкова дія Завантажити налаштування сумісності є явним мережевим винятком, описаним у політиці конфіденційності.

Перший механізм ярликів такого типу

Для архітектури ярликів Parall немає публічного API, повної документації чи опублікованого рецепта. Я розробив її завдяки власному зворотному проєктуванню та безпосередньому тестуванню нативної поведінки macOS. Публічні приклади та типові реалізації, створені ШІ, зазвичай повертаються до скриптів, скопійованих пакетів або перепакування. Наскільки мені відомо, Parall є першим споживчим інструментом, який розв'язує цю проблему без зміни цільової програми. Механізм і надалі розвиватиметься, поки я досліджуватиму поведінку macOS.

Навіщо існує Parall

Понад десять років я стикався з обмеженнями macOS щодо запуску кількох екземплярів одного застосунку. Я створював для себе скриптові пакети застосунків, щоб обходити це, а потім зрозумів, що немає простого й відполірованого способу для звичайних користувачів створювати такі ярлики з поведінкою застосунків. Parall перетворює цей процес на перший інструмент такого типу, створений саме для ярликів застосунків з підтримкою кількох екземплярів.

Parall підтримує автоматичне розділення даних для сумісних застосунків на основі Chrome, Firefox, Electron, Eclipse і ToDesktop, навіть коли цільовий застосунок працює в пісочниці. Розширений режим перенаправлення HOME також підтримує багато інших сумісних застосунків. Детальний і актуальний список доступний на сторінці сумісності.

Навіть коли режим кількох екземплярів не потрібен, Parall можна використовувати для створення ярлика сайту, застосунку, файлу, папки або команди з власною ідентичністю та конфігурацією запуску. Ярлики застосунків можуть додавати власні аргументи командного рядка або перевизначати змінні середовища, включно з HOME, щоб керувати поведінкою, вибирати профілі або перенаправляти шляхи даних. Перевизначення HOME створює контейнероподібну структуру й водночас зберігає важливі macOS-посилання для сумісності.

Визначайте власні змінні середовища, які застосовуються лише до цього ярлика. Це добре підходить для точної конфігурації, налагодження або проєктних середовищ. Parall також підтримує Arduino IDE, дозволяючи запускати окремі середовища розробки з різними toolchain, платами та бібліотеками поруч.

Для навчальних лабораторій і класів Parall може автоматично стирати перенаправлене сховище даних ярлика після його завершення. Це дає змогу легко починати кожну сесію з чистого стану для студентських експериментів без ручного прибирання.

Чому Parall важливий

Parall робить запуск кількох екземплярів одного macOS-застосунку простішим, ніж будь-коли. Кожен має власну Dock-іконку й конфігурацію, наче це окремі застосунки. Замість обхідних шляхів або складних скриптів Parall створює незалежні ярлики, які запускають кілька екземплярів застосунків і дозволяють одночасно використовувати кілька профілів або сесій.

Кожен ярлик залишається напряму повʼязаним з оригінальним пакетом застосунку. Тому коли оригінальний застосунок оновлюється, усі ярлики, створені в Parall, автоматично використовують оновлену версію. Їх не потрібно створювати заново або підтримувати вручну.

Parall містить розширене керування середовищем, що дає точний контроль над тим, як кожен екземпляр застосунку зберігає й розділяє дані. Це також відкриває складні робочі процеси, як-от запуск кількох окремих екземплярів Philips Hue Sync у macOS, щоб різні дисплеї мали власні LED-конфігурації без перетину екземплярів.

Хто створив Parall

Я Ihor July, і я розробляю Parall як фахівець з кібербезпеки та реверс-інженерії, зосереджений на безпечних і приватних macOS-інструментах. Я також розробник DockLock Pro, Mac-утиліти для керування поведінкою Dock на кількох дисплеях, App Trust Preview, локального Mac-застосунку для перевірки застосунків, який перетворює підпис, пісочницю, дозволи й внутрішні компоненти на зрозумілі звіти перед відкриттям застосунку, і LockLines, Mac-утиліти для створення, перегляду й копіювання текстових повідомлень, що вміщуються в macOS.

Я проєктую, програмую й тестую Parall. Я пишу код застосунку, перевіряю кожну зміну та підтримую повторно використовуваний фреймворк Objective-C для своїх застосунків. ШІ й онлайн-пошук допомагають досліджувати помилки та крайові випадки, працювати з текстами й перекладами, але ядро, сумісність з окремими застосунками, реалізація й тестування є результатом моєї власної зворотної інженерії та роботи над кодом.

Застосунок нативно створений на C++ для продуктивності й працює в пісочниці для максимальної безпеки. Parall відображає роки досліджень і розробки, спрямованих на практичні, приватні рішення для користувачів macOS.

Про пакети ярликів

Ярлики, створені Parall, є окремими пакетами macOS-застосунків, які напряму виконують бінарний файл цільового застосунку. Ці пакети ярликів навмисно не ізольовані в пісочниці, бо мають запускати оригінальний застосунок напряму без додаткових шарів.

Кожен ярлик непідписаний, бо будь-яка зміна пакета застосунку видаляє його оригінальний підпис. macOS може показати повідомлення, що ярлик "намагається змінити інший застосунок", але це загальне системне сповіщення, викликане доступом, а не зміною. Parall не змінює жодних системних файлів або застосунків.

За задумом Parall створює лише пакети ярликів, які віддзеркалюють структуру й конфігурацію оригінального застосунку. Він ніколи не змінює, не інжектить і не записує в наявні застосунки або операційну систему, щоб ваш Mac залишався безпечним і незміненим.