В macOS 10.15 более не поддерживаются 32-битные приложения. Что вы можете сделать?

    Picture 2

    7 октября 2019 года Apple выпустила в свет новую версию своей операционной системы для Mac, macOS Catalina. Версия 10.15 содержит множество изменений и улучшений. Одно из значимых – полный отказ от 32-битных приложений. Будучи разработчиком таких приложений для macOS, что вы можете сделать? Правильно, портировать приложение на 64-битную платформу. Будет ли приложение работать правильно с первого раза? Возможно. Зависит от сложности и объёма кода. Но, скорее всего, разработчики столкнутся с множеством неочевидных ошибок, которые можно заранее выявить с помощью PVS-Studio.

    Введение


    Несмотря на то, что технически запуск 32-битных приложений в 64-битной среде возможен, Apple решила более не идти по этому пути и завершить процесс перехода на 64-битную платформу, начатый ею ещё 10 лет назад. Для пользователя это означает, что если разработчик их любимого приложения вовремя не озаботился его переводом на 64-битную платформу, то приложение просто перестанет работать в обновленной macOS Catalina.

    Нельзя сказать, что решение Apple было неожиданным: уже в 2018 году на конференции Worldwide Developers Conference компания говорила, что macOS Mojave станет последней версией macOS с поддержкой 32-битных программ. Вероятно, большинство разработчиков популярных приложений успешно мигрировали на 64-разряда к выходу macOS Catalina, или завершают переход.

    Нужно отметить, что при кажущейся простоте, перевод приложения на 64-битную платформу содержит массу «подводных камней». А если часть приложения написана с использованием языка С++, то от разработчика может потребоваться глубокое понимание механизмов работы с памятью и указателями, а также учет многих неочевидных нюансов. В данном случае полезно воспользоваться инструментом, позволяющим проконтролировать корректность кода именно с учетом перехода с 32 на 64-битную платформу. Например, статическим анализатором кода PVS-Studio.

    64-битные диагностики


    Анализатор PVS-Studio содержит в своем составе специальную группу диагностик для этого случая. Вообще, PVS-Studio как инструмент изначально создавался для целей анализа С/C++ кода при поиске именно ошибок миграции на 64 бита, и только впоследствии развился в анализатор более общего назначения: были добавлены языки C# и Java, появилась возможность поиска потенциальных уязвимостей, поддержка стандартов безопасного кодирования (MISRA, например) и многое другое.

    За прошедшее время нами накоплен большой опыт по вопросам перехода на 64-битную платформу, написаны статьи. Одна из хороших статей на эту тему: "Коллекция примеров 64-битных ошибок в реальных программах". Статья довольно старая, но проблемы, описанные в ней, не теряют актуальности и сегодня. Рекомендую к прочтению, особенно если вы планируете или уже работаете над переводом своих приложений на 64 бита (будь то приложения на С++ для macOS или любой другой операционной системы).

    Включить 64-битные предупреждения можно следующим образом:

    Windows/Visual Studio

    В окне просмотра предупреждений есть кнопка включения всей группы 64-битных диагностик:

    Picture 3

    Linux/macOS

    При запуске анализатора из консоли необходимо включить 64-битные диагностики как в анализаторе, так и в генераторе отчётов:

    pvs-studio-analyzer analyze ... -a 5 ...
    plog-converter ... -a "64:1,2,3"

    Заключение


    Ну и, конечно, ничто не мешает вам скачать и попробовать анализатор PVS-Studio на своем коде. Удачи в борьбе с 64-битными и другими ошибками!



    Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Sergey Khrenov. MacOS 10.15 no longer supports 32-bit apps. What can you do?.
    PVS-Studio
    501.75
    Static Code Analysis for C, C++, C# and Java
    Share post

    Similar posts

    Comments 21

      +1
      Стоит ли ждать такого от Microsoft?
        +1
        Я думаю это рано или поздно произойдет, а может к этому времени появятся какие то 128 битные платформы и все на них перейдут разом. На счет майкрософт волноваться не стоит, они самые демократичные в этом плане если не будет своего, то стронний эмулятор 100% будет.

        Ведь по факту Виндовс это народная ось!
          0

          Если опыт "Windows Mobile -> Windows Phone -> пустота" ничему не научил, то да. К сожалению (наверное) для компании, легаси — мощный столп, на котором держится популярность десктопной оси.

            0
            Конечно стоит ждать. Я думаю однажды прекратится поддержка 32-битных приложений. и 64-битных кстати тоже, в этот же день: они просто настольную винду забросят (как забросили Phone и CE), она у них и так сейчас не основной доход уже.
            :)
              0
              С учётом того, что они пилят для ARM эмулятор x86? Думаю, не в ближайшее время.
                –1
                В любом случае с технической стороны, apple это тупиковая ветвь развития. Их конёк дизайн. Производство Китай, микросхемы сторонних фирм, софт «на патентах».
              0
              >memsize type is used in struct/class
              почему это проблема?
              Да, размер и/или layout структуры/класса будет зависеть от платформы. Но это имеет значение только при вводе/выводе структуры как двоичного массива.
              0
              С моей точки зрения это хорошее решение, смелое и немного революционное. Конечно у разработчиков, которые не озаботились перевести свои приложения сразу, возникнут проблемы, но как написано выше, разговор об этом давно шел. Какие тут есть подводные камни для обычных юзеров?
                +3
                Не уверен что форсирование перехода на 64 это революция. Все так же как и с джеком 3.5
                  0
                  У них переход на свои ARM, думаю, они хотят унифицировать железо, чтобы один и тот же софт работал везде.
                  А отказ от x32 — дешевле разработка.
                  +2
                  У обычных пользователей появится острая необходимость приобрести новые версии ПО, т.к. старая версия вполне могла работать и без актуальной поддержки.
                  А ещё будут проблемы, например, со старыми принтерами, разработчики которых не обновляли и, вероятно, не будут выкатывать драйвера под 64-битную систему, что обернётся необходимостью купить новое оборудование.
                    0

                    Причём новых версий может и не быть, и придётся искать альтернативы.

                  0

                  Оказывается немножко, но поддерживаются


                  http://netkas.org/?p=1491

                    0

                    А visual studio for mac 32 битная ?)

                      0
                      Сама VS может быть и под 64 собрана.
                      А вот 100500 бинарников, которые дёргаются в процессе сборки — зависит от.

                      Например, у меня есть VS Code, в ней из плагинов стоит в том числе PlatformIO, и в нём несколько профилей для разного железа. В том числе закрытые бинарные пакеты, которые собраны под макось в 2013 году под 32 бита и шансов на обновление около нуля.
                      Впрочем, даже avrdude вроде идёт 32-битный из репы)
                      +9
                      Особенно эпично выглядит фэйл любимой Adobe, у которой ВНЕЗАПНО с выходом Каталины флагманский CC 2019 оказался несовместим с ОС по ряду функций. Вероятно, несколько выпусков beta-версий для разработчиков за полгода до релиза и прямой канал общения с Apple — это пути для слабаков. Помнится, введение ежемесячной подписки объясняли как раз тем, что у пользователей всегда будет актуальная версия. Это же как нужно облениться, чтобы забить на апдейт своего основного продукта под основную ОС, на которой сидит львиная доля художников и дизайнеров. Да, они «уже работают над исправлениями», спустя неделю после выхода ОС.

                      Самое ироничное в том, что похожая ситуация вывела Adobe в лидеры рынка издательских систем в начале 2000-х. В те годы лидером рынка сложной полиграфической вёрстки была Quark со своим пакетом QuarkXPress, почти весь глянец верстали именно в ней. А надо сказать, что глюков у QuarkXPress 4 хватало, особенно с расширениями, потому Quark решила хорошо вложиться в версию 5 и вылизать все шероховатости. Вложились так, что разрабатывали её целых пять лет и пропустили переход мака с Mac OS 9 на OS X. В итоге, когда вышла модная OS X, под неё не было основного издательского пакета, что заставляло отделы вёрстки сидеть на «классике». И вот тут Adobe очень круто подсуетилась с выпуском InDesign в 2002 году, одновременно с QuarkXPress 5 (для старой Mac OS 9), в результате чего на целый год оставались единственной издательской системой под OS X, пока Quark лихорадочно делала шестую версию. Года хватило, чтобы народ распробовал новый пакет от Adobe и дальше InDesign медленно, но верно захватил рынок у Quark.
                        0

                        Застал как раз этот момент на моей первой работе)

                          +3
                          Ах… золотые годы :) Флайчек для проверки postscript, мольба, чтобы не сорвало кривые на выводе плёнок, огромнные Линотроники и дорогущие цветопробы-хромалины. Несовместимость вёрстки на Mac и на PC, файлы на SyQuest и магнитооптике, ночи на плёнковыводе, барабанные сканеры, большие мониторы Барко и Радиус с козырьками и прогрев кинескопов перед работой и калибровкой… Как вчера это всё было.

                    Only users with full accounts can post comments. Log in, please.