1. Куча / Говнокод #24404

    0

    1. 1
    https://blogs.msdn.microsoft.com/commandline/2018/03/07/windows10v1803/

    в винду завезли far, openssh и AF_UNIX (aka unix domain sockets), хотя раньше были только named pipes.

    Мне кажется что скоро завезут подсистему tty и posix-compatible шел

    Запостил: roskomgovno, 21 Июня 2018

    Комментарии (37) RSS

    • тред про винду
      Ответить
    • > в винду завезли far

      Скрины есть?
      Ответить
      • tar
        tar завезли

        я рукожоп
        Ответить
        • А смысл? Завозили же "bash", а в нём оно есть
          Ответить
          • нет, нормального баша (win32api, нативного) под винду нет
            Ответить
            • зачем это скрещивание идеологически несовместимых систем?
              Ответить
              • У винды очень гибкая идеология: туда можно и баш впихнуть.
                Да и линуксы нынче не те: с dbusами, polkitами и systemd
                Ответить
              • В Windows 2000 были подсистемы os2 и posix.

                С помощью первой можно было исполнять 16-битные консольные программы для OS/2 как нативные (а с помощью отдельно приобретаемого модуля можно было запускать и гуёвые для PM). Поддержку 32-битных, правда, сделать не успели, в Windows XP подсистему os2 выпилили.

                С помощью второй можно было запускать юниксоподобные программы (к сожалению, только в виндовом формате экзешника). Правда, программ в этом формате не было (был только отдельно приобретаемый пакет всяких утилит типа sh, tar etc.).

                Эти штуки MS добавлял, чтобы получить какой-то сертификат о совместимости.
                Ответить
                • Изначально считалось что у Windows будет NativeAPI и поверх будут Subsystems для разных чуваков.

                  Subsystem указывался в заголовке PE (опция линковщика я полагаю).
                  Причем подсистемы должны были крутиться отдельными процессами: (отсюда Client-Server-Runtime-Subsystem для win32, psxss для позикс, ntvdm для V86 тоже в каком-то смысле)

                  Posix (точнее его малую часть) завезли чтобы получить сертификат американского минобороны.

                  Ну а потом на все подсистемы забили хуйца и теперь кроме Win32API других нормальных API нету.


                  зы: ситуация напоминает .NET: там тоже хотели чтобы было миллион языков, а в итоге 80% кода под .NET написано на C#.
                  Ответить
                  • C ".NET" вообще связана куча преданий и легенд. До выхода "Win XP" в анонсе писали, что ".NET Framework" -- это временное явление. Следующая система будет полностью ".NET" (чуть ли не на уровне ядра). Потом обещалки куда-то исчезли.

                    Ещё обещали "WinFS"...
                    Ответить
                    • Там даже коднейм у кого-то был .NET.

                      В целом .NET более рекомендуемый API для винды чем Win32API: MS говорит что если ты можешь что-то написать на .NET то лучше так и сделай
                      Ответить
                  • Ещё была обещалка (лет пятнадцать назад) прекратить поддержку "DLL" (как небезопасного способа загрузки кода) и заменить их другим механизмом. Но что-то альтернативы до сих пор не видно.
                    Ответить
                    • хм.

                      А как можно отказаться от .dll?
                      Чем заменить?
                      Ответить
                      • Надо искать пресс-релизы тех лет. Тогда было много шума.

                        Один из слухов был, что формат PE заменят на LE (как у VxD в Win 95).
                        Ответить
                        • ... Или речь шла о замене WinAPI на сисколы. Т. е. сисколы стандартизируют и в будущем импортировать kernel32 будет не нужно.

                          Теперь мы можем только гадать. Сходу нагуглить ничего не получается. Но шума было много.
                          Ответить
                          • >>сисколы стандартизируют и в будущем импортировать kernel32 будет не нужно.

                            Как в Linux ABI что-ль?

                            Кстати, kernel32 уже тоже разобрали по колышкам. MinWin же: там теперь вместо kernel32 импортируется 150 "виртуальных" библиотек
                            Ответить
                            • Сейчас фуррифокс тащит с собой

                              api-ms-win-core-console-l1-1-0.dll
                              api-ms-win-core-datetime-l1-1-0.dll
                              api-ms-win-core-debug-l1-1-0.dll
                              api-ms-win-core-errorhandling-l1-1-0.dll
                              api-ms-win-core-file-l1-1-0.dll
                              api-ms-win-core-file-l1-2-0.dll
                              api-ms-win-core-file-l2-1-0.dll
                              api-ms-win-core-handle-l1-1-0.dll
                              api-ms-win-core-heap-l1-1-0.dll
                              api-ms-win-core-interlocked-l1-1-0.dll
                              api-ms-win-core-libraryloader-l1-1-0.dll
                              api-ms-win-core-localization-l1-2-0.dll
                              api-ms-win-core-memory-l1-1-0.dll
                              api-ms-win-core-namedpipe-l1-1-0.dll
                              api-ms-win-core-processenvironment-l1-1-0.dll
                              api-ms-win-core-processthreads-l1-1-0.dll
                              api-ms-win-core-processthreads-l1-1-1.dll
                              api-ms-win-core-profile-l1-1-0.dll
                              api-ms-win-core-rtlsupport-l1-1-0.dll
                              api-ms-win-core-string-l1-1-0.dll
                              api-ms-win-core-synch-l1-1-0.dll
                              api-ms-win-core-synch-l1-2-0.dll
                              api-ms-win-core-sysinfo-l1-1-0.dll
                              api-ms-win-core-timezone-l1-1-0.dll
                              api-ms-win-core-util-l1-1-0.dll
                              api-ms-win-crt-conio-l1-1-0.dll
                              api-ms-win-crt-convert-l1-1-0.dll
                              api-ms-win-crt-environment-l1-1-0.dll
                              api-ms-win-crt-filesystem-l1-1-0.dll
                              api-ms-win-crt-heap-l1-1-0.dll
                              api-ms-win-crt-locale-l1-1-0.dll
                              api-ms-win-crt-math-l1-1-0.dll
                              api-ms-win-crt-multibyte-l1-1-0.dll
                              api-ms-win-crt-private-l1-1-0.dll
                              api-ms-win-crt-process-l1-1-0.dll
                              api-ms-win-crt-runtime-l1-1-0.dll
                              api-ms-win-crt-stdio-l1-1-0.dll
                              api-ms-win-crt-string-l1-1-0.dll
                              api-ms-win-crt-time-l1-1-0.dll
                              api-ms-win-crt-utility-l1-1-0.dll

                              Даже для семёрки и висты выпустили эту хрень. Может быть, и для XP тоже.

                              Это что ли?
                              Ответить
                              • да, это т.н. API Sets
                                Ответить
                                • А зачем оно? Пытаются исправить ошибки старого дизайна (т. е. в будущем будут маленькие библиотеки, а kernel32 станет виртуальной для старых программ)?
                                  Ответить
                                  • Да, именно так:
                                    В середине нулевых Руссинович заметил что kernel32, user32, advapi32 итд слились в единую какашку циклических зависимостей и надо бы навести порядок.

                                    Решено было разделить .dll на уровни: есть core, есть crt, есть eventing (для evt). И вот core не может депендица на evt.

                                    Однако чтобы не сломать 100500 старых программ, сделано было так: новые программы линкуются с дин. зависимостью на такие вот .dllы (их назвали "наборы api -- api sets").

                                    В момент загрузки умный виндовый лоадер исползьует механизм namespace redirection чтобы подменить их на настоящую .dll.

                                    К примеру он знает что api-ms-pituh.dll реализован в user32.dll, и ее грузит. А завтра API "pituh" унесут в "pethu.dll', поправят редирект и программа ничо даже не узнает.

                                    Короче, ты линкуешься на ИНТЕРФЕЙС а не на конкретную реализацию.

                                    Почитай про проект MinWin и API Sets.


                                    ps: забавно поломался dependency walker по понятным причинам

                                    оч советую читнуть
                                    https://ofekshilon.com/2016/03/27/on-api-ms-win-xxxxx-dll-and-other-dependency-walker-glitches/
                                    Ответить
                                • Кстати, Стертор будет негодовать, если kernel32 отменят. Теперь у малвари секция импорта распухнет на пару килобайт.
                                  Ответить
                                  • Негодовать будиш ты, когда ты, окажешься на куполе волосатого "минарета", словно муэззин
                                    Ответить
            • А mingw и аналогичные проекты?
              Ответить
    • > в винду завезли far

      Скрины есть?
      Ответить
      • конечно
        я из фара не вылезаю

        зачем мне проводник?
        Ответить
      • Жалко сис. админов, как им объяснить ебучий FAR бухам? Они же только-только привыкли к окошку с крестиком...
        Ответить
    • Из винды надо вывезти UWP. Очередную херню придумали...
      Ответить
      • так это же для кросс-платформенности. Ну и чтобы на JS пиать
        Ответить
    • Патчим KDE под FreeBSD Заводим Git for Windows под ReactOS

      https://habr.com/company/reactos/blog/414947/

      :D :D :D
      Ответить
      • Весело, что ошибка была не в "ReactOS" и даже не в "Git", а в "msvcrt". Использовать микрософтовскую библиотеку "msvcrt" не позволяют убеждения, поэтому пришлось велосипедить.
        Ответить
      • Ребята молодцы. Еще лет 15-20, и у них будет почти полная копия Windows 2003 Server. Они смогут запускать процентов 60 написанных под него программ (ну не без патчинга конечно, но смогут).
        Ответить
        • Они же испытывают давление со стороны MS. Им приходится писать код так, чтобы он даже случайно не совпал с микрософтовским. Был инцидент, когда MS их обвинял в том, что в скомпилированной DLL совпал фрагмент длиной в десяток байтов.

          Представляете, каково это добиваться полной совместимости, но при этом перемешивать код, чтобы получить максимальное отличие?
          Ответить
          • ...и при этом еще не иметь доступа к сырцам.

            Многие вещи в винде вообще никак не документированы. Например, существует крайне хитрая логика по которой выбирается наследует-ли процесс консольку (conhost) или создает новую.

            Кроме как методом проб и ошибок это никак не узнать
            Ответить
            • Такие люди как Руссинович или Касперски стали экспертами в Windows NT с одной только Ollydbg и без доступа к исходникам. Руссиновича взяли в MS уже после того как он книгу про Windows написал. Вероятно усидчивость и знание принципов операционных систем (и архитектуры процессора) вполне достаточно для овладевания
              Ответить
        • Они же испытывают давление со стороны MS. Им приходится писать код так, чтобы он даже случайно не совпал с микрософтовским. Был инцидент, когда MS их обвинял в том, что в скомпилированной DLL совпал фрагмент длиной в десяток байтов.

          Представляете, каково это добиваться полной совместимости, но при этом перемешивать код, чтобы получить максимальное отличие?
          Ответить
        • Они же испытывают давление со стороны MS. Им приходится писать код так, чтобы он даже случайно не совпал с микрософтовским. Был инцидент, когда MS их обвинял в том, что в скомпилированной DLL совпал фрагмент длиной в десяток байтов.

          Представляете, каково это добиваться полной совместимости, но при этом перемешивать код, чтобы получить максимальное отличие?
          Ответить

    Добавить комментарий