Компонентный комплект абстракции системы мешка.
libuv, libsdl, gkt, qt, ... только ни один из них в одном. В первую очередь расширения для C для списков, стеков, очередей, с механизмами блокировки и без. Диагностика памяти, созданные для идентификации, чтобы идентифицировать/недостаточно, или использование (записи) после бесплатного; Уведомления о событиях файловых систем в стандартном API, простых потоках, сети на основе событий, которые работают над фоновыми потоками, HTTP, WebSocket, JSON, JSON6, JSOX Parsers, экспортируемого анализатора XML; SQLite/ODBC Common Wrapper, которая упрощает соединение базы данных и использует; Простая цифровая библиотека, векторная библиотека, процедура и система регистрации функций, которая может зарегистрировать как функции, так и интерфейсные таблицы для взаимосвязи библиотечного модуля в сложных системах подключаемых систем; Абстракция файловой системы и интерфейс виртуальной файловой системы.
Что это не так? Это сама по себе операционная система, ей не хватает погрузчиков задач и самого распределения процессов; Память запрашивается из системы и управляется для кода, память может быть разделена между Proces.
Документ, опубликованный из информации о документе заголовка - http://sack.sf.net (https://sourceforge.net/projects/sack/)
Git часто более обновляется. GIT является основной системой управления источником разработки. Mercurial больше не используется. (Sourceforge устарел)
Монотон был бы лучшим; но; Ну ... может быть, они были слишком закрыты.
C Одиночные исходные пакеты. C/C ++ Компилируемые источники и один заголовок. Ссылки на экологически чистые документы в каждом проекте ...
Выставлен через Interop в v8 через node.js ...
Оба проекта построены с одним и тем же источником - отдельные Cmakelists используются для создания версии GUI, используя версию Sack, вытащенную из GitHub; а не объединение включено.
GIT не позволяет экономить крючки очень хорошо - но подмодули - это своего рода боль. Это мигрировало, чтобы использовать подмодулы GIT; Что для легкого требует крючков. Настройка конфигурации для того, где загружаются крючки для этого, поможет.
Крюки в.
# git config --global core.hookPath .githooks
# git clone git://github.com/d3x0r/sack
# cd sack
# mkdir build # could be mkdir sack/build instead
# cd build
# cmake ../cmake_all -DCMAKE_BUILD_TYPE=Debug
### alternatively, you can just build the sack core
# cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=output
### and later build binary specifically
# cd ..
# mkdir sack-binary-build
# cd sack-binary-build
# cmake ../binary -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=output -DSACK_SDK_ROOT_PATH=../build/output
Имя CMAKE_BUILD_TYPE (Release/Debug/relwithdebinfo/minrel) используется для генерации каталогов _solution и _out. Если вы используете «отладку», то каталоги будут «отладкой» и т. Д. Каждый проект устанавливает в соответствующую папку <buld_type> _out.
ccmake или cmake-gui можно использовать для настройки параметров для компиляции. Это справедливо, чтобы угадать, основываясь на системе, но иногда есть вещи, которые вы хотели бы изменить.
Настройки конфигурации для Global имеют опцию BUILD_EXTRAS , которая будет создавать больше приложений в мешке, которые являются менее поддерживаемыми или для тестирования или глубоко в разработке.
Конфигурация SACK ..._ Решение/Core Project имеет много вариантов, например, использовать ли включены PNG/JPEG/Zlib и т. Д., Или системные версии. То же самое с SQLite. Может позволить no_odbc отключить зависимость библиотек ODBC ... многое другое.
(linux) unixodbc (параметры Cmake с использованием CCMake в ядре может отключить эту зависимость);
(OpenSSL?)/Libressl (включен Libressl 3.2.1 (последний))
Запчасти для графического интерфейса (имена пакетов Ubuntu могут отличаться для других систем)
ffmpeg может использоваться некоторыми из кода для генерации игроков видео/аудио потокового аудио. Модуль интерфейса FFMPEG динамически загружает ffmpeg.dll, который должен быть доступен для Windows в репозитории; или можно построить ...
Я получил его, чтобы построить с WSL 2; (WSL - -Install). и Arch Linux Image (https://github.com/yuk7/archwsl); Предполагая, что инструменты сборки в качестве соответствующих
Pacman -s Make Diffutils Mingw-W64-GCC
И, возможно, Mingw-W64-PKG-Config (AUR) Mingw-W64-Environment (AUR) Mingw-W64-Cmake (AUR)
git clone https://github.com/FFmpeg/FFmpeg.git
cd FFmpeg
mkdir build
../configure --arch=x86_64 --target-os=mingw32 --cross-prefix=x86_64-w64-mingw32- --prefix=output --enable-shared --disable-static
Как правило, это большая коллекция крошечных вещей. Он компилируется для C/C ++. Это библиотека с некоторыми программами поддержки/утилиты; это ядро; Есть еще несколько автономных приложений, включенных. Он обеспечивает абстракции между Windows и POSIX и даже различными вкусами POSIX, такими как Linux, Android, Mac и др. Это SDL (вроде), это занят, но не совсем. Это gtk (sorta), это STL (стеки, списки, очередь, постоянные, дженерики, ...), он может даже полагаться практически на ни одной из библиотеки C.
В начале была программа серийных терминалов DOS. Он был написан на C., конечно, отсутствовали основные типы контейнеров, поэтому в основном каждая структура была какой -то новой реализацией чего -то старого; Но это было кратко и не было дополнительных вещей, которые он не «нуждался» в случае общего класса, который может предоставить вещи, которые не используются, за исключением конкретных случаев. Это на самом деле имело нити; В Варитских штатах было несколько стеков инструкций, на которые это могло бы отказаться от времени.
Он превратился в проприетарную ОС, называемую NIPC (New Inter Process Communications), которая не только имела потоки, но и может загружать файлы dos .exe в качестве процессов в потоки (не только файлы .com). Это управляемое распределение памяти, доступ к дисплее, дисковые акции и время процессора в раундовой моде. Вначале не было никакого сна, но более поздние темы могли выйти из графика, чтобы даже не разбудить. На 386-25 он получил aound 1500 циклов в секунду. Но большая часть его реальной работы была в обработке прерываний, общаясь с какой -то другой системой.
Затем были Windows 3.1 ... и NT 3.51 на короткое время, пока NT4 не вышел. Так что теперь все пользовательские управления потоком было довольно устаревшим, но этот распределитель, это было довольно хорошо. И было много разработки общих труб/очередей/и т. Д. и гнездах. В NIPC тоже были розетки; Написано как стек UDP/TCP/IP, на сетевую карту, которая была непосредственно записана; API для этого был, конечно, основан на событиях, потому что я действительно не знал никакого другого вида метода для борьбы с сетью. Конечно, были гнезда Беркли, и они сказали мне, что я должен реализовать этот API, и это было очень запутанно ... Я должен сидеть и ждать данных?
Затем был Интернет, там была жизнь как отшельник, прикованная к тому, кого не поймали, и болел от того, который изменил замки, и там был «Вурт».
Здесь и там было много мелочей, забавляя себя со звуковыми бластерами и 3DFX (Glide). Некоторые конструктивные алгоритмы геометрии, которые довольно хорошо работают для выпуклых твердых веществ ...
Так что здесь ядро действительно сформировалось как собственная вещь. Это были типы (текст, списки, стеки, очереди, ...), выдвижник памяти (который имеет операцию hold (), которая позволяет удерживать этот блок памяти после того, как владелец освобождает ее.), Которая также оказана в распределении в пользовательских кучах общей памяти между процессами; Это и использовать кучу, поддерживаемую файлом в качестве постоянной памяти, которая может быть перезагружена, и программа резюме в существующем состоянии памяти. И фиксированное сетевое взаимодействие; превращение того, что было опробовано в события. Сеть многое развивалось с дни в начале использования одного waitformuitpleobjects (), в конце концов, не является ли кому -то 64 сокета? (Нет, клиенты, связанные с 2000 году, имеют проблемы, связанные с тем, что 80% не провалились). Примерно в это же время были начаты слои графического интерфейса. Вдохновленный Allegro, и принять их структуру ImageFile_tag {}, внедренные специально 32 -битные процедуры цветового пути. Аллегро имел поддержку всех видов пикселей, которые, как и быстрее, все еще замедлялись, вызывая через косвенные указатели функции. У меня были версии сборочной сборы некоторых блок-копии и линейных подпрограмм как ароматов ASM, так и MMX. К тому времени, когда SSE вышла, компиляторы делали действительно хорошую работу по оптимизации C, и компьютеры были просто быстрее, что то, что уже было очень быстро, было настолько быстрее, что обслуживание Assmebly для различных платформ/компиляторов установило его. После того, как у вас есть изображения, вы можете рисовать, то это просто вопрос, чтобы система показала их, поэтому был сделан интерфейс Windows с целью Just Linux Framebuffer (что никогда не было очень быстро).
Таким образом, учитывая это как платформу, Dekware как приложение, основанное на Sack, приняло форму и в конечном итоге проявилась; служит тестовым приспособлением для библиотеки.
Таким образом, была единая библиотека изображений и библиотека рендеринга, поэтому они были как упакованы в один большой пакет. (Cmake по -прежнему имеет варианты build_monolithic, которые, вероятно, сейчас довольно сломлен). В то время я играл много грязи, используя Dekware (даже поддерживал Dekware для кого-то еще, кто работал на FreeBSD, с не-GNU Make; какая боль, которая была ... я упоминал, тогда я использовал Make, и у меня было множество различных ароматов макияж для множества систем?) ... В любом случае, это действительно происхождение мешка; До этого это было просто «общедоступным» после того, что я узнал в своей предыдущей работе. Мешок - большая сумка. Сумка может содержать 5 мешков, но мешок может содержать 25 мешков. Сумка-это базовая группа агрегатов или подмодуль ... часть, которая сама может быть подготовлена и не повлиять на что-либо еще; и мешок содержит много сумок.
Таким образом, была новая работа, создавая новое программное обеспечение, и я смог очень быстро использовать приложения и создавать приложения, которые будут работать в Windows или Linux с тем же кодом и без #ifdef. Я разработал уровень MSGSVR с использованием очередей сообщений SYSVIPC и сделал общий драйвер отображения для приложений; С тех пор я потерял это, я полагаю, я решил, что это было достаточно сломано, чтобы его нужно было убить и переделать. В то время у меня уже были открытые, GL2, GLES, QNX, WebSocket/HTML -дисплея; И система сообщений выглядела хорошо, но на самом деле была довольно плохой. (Это все еще там, и некоторые вещи все еще используют его; это работает ....) Здесь, на этой новой работе, я должен представить свою библиотеку другим; Я не понимал, как «мешок» может означать что -то совершенно иное, чем я намеревался. Это стало плохим, когда я сделал этот проект (молоко - модульный комплект макета интерфейса), который основан на моем мешке; или происходит от ...
Со временем, как для демонстрационных целей, тестирования, так и общей утилиты, в папке «utils» под мешкой, которая является своего рода действительно крошечными приложениями, основанными на мешке; и папка «игры» с вещами, которые ближе к приложениям. Если по какой -либо другой причине, кроме справочного кода.
Итак, есть векторная математическая библиотека (Remeber обратно для конструктивной геомистики?), Фракционная математическая библиотека, которая хранит числа целых чисел номера/знаменателя; Это используется в целях масштабирования в сумке с графическим интерфейсом. Есть обертка для таймеров; Как Windows SetTimer, есть addTimer (); Таймеры и потоки (Threadto () вместо pthread_create/createThread/....).
Intershell - это программа, предназначенная для быстрого производства полноэкранных специальных функциональных приложений (интерфейсы киосков, дисплеи и вывески). Он поддерживает прозрачные окна, так что вы можете наладить статический контент на существующий анимированный контент, возможно, сыгранный с чем -то вроде VLC (хотя есть крошечная утилита для воспроизведения видео, просто используя FFMPEG в качестве управления Dropin в Интерболе).
Источники, как правило, отделены, что требует наименьшего количества зависимости от других. Когда -нибудь это должно быть расчесывано в фактическое дерево зависимости, которое можно использовать на более высоком уровне.
if( options/version == 1 ) option set options/version=2... option default otheroption/app/color=12344И где -то упорядочено в вышеупомянутом реестре процессов, позволяет регистрировать значения, функции и типы для последующего потребления. Реестр управления PSI основан на этом дереве реестра. Имена в дереве можно сбрасывать для последующего просмотра (отладка, как, где это закончилось?). Этот модуль также является Deadstart Library, которая считывает интерфейс interface.conf и обрабатывает загрузку дополнительных модулей или настройки псевдонимов на интерфейсы на основе указанных параметров. (Это заслуживает хотя бы целого википажа)
12 ... n) Много маленьких утилит, написанных с этой библиотекой абстракций, которые обычно работают над всеми системами.
Некоторые базовые функции, которые отличаются - создайте процесс, эффективно обрабатывать сокеты, абстракции файловых систем (даже пример виртуальной файловой системы, который показывает, как вы можете реализовать свои собственные интерфейсы файловой системы), Ping (необработанные сокеты), ARP, драйвер запроса WHOIS, который немного устарел, крючке Windows Service для написания собственных услуг. Даже пример сервиса, которая просто запускает произвольный исполняемый файл. Система перевода языка (ничего такого особенного или волшебного).
n+1) взаимосвязь; Это общий обработчик макета приложения. Он обрабатывает плагины высокого уровня с общими элементами управления, которые можно легко размещать даже после развертывания. Небольшие плагины могут быть легко загружены через интерфейс, обеспечивающий простые интерфейсы событий для кода пользователя.
n+10) dekware - все вышеперечисленное; Он может загрузить межболку, затем расширить кнопки, чтобы обеспечить сценарии. Терминал, общая утилита обработки сценариев ...
Библиотеки изображения и рендеринга подключены через интерфейсы. Интерфейс - это структура указателей функций, которая запрашивается по имени. Интерфейсы могут быть псевдонимом, поэтому, если видео загружается как «video.opengl» псевдоним, называемый «видео», можно создать, чтобы выбрать, какие из нескольких, по умолчанию.
Изображения - 32 -битный цвет; Существуют функции для предоставления платформы, заказанных DWORDS для создания цветов из компонентов или получения компонентов из цветов. Внутренне есть только несколько узких петлей, оптимизированных для 32 -битных цветовых переводов и операций. Еще в 2000 году я искал 64 -битный цвет, который существует внутренне на видеокартах для более высокой точности (меньше утерянных десятичных десятиков точности) ... но, как правило, пользователь не может дифференцировать каждый уровень 256 цветов, поэтому его более чем достаточно.
Поддержка Linux через Navtive X теперь Android может использовать GLES2 или нативные кадры (AnativeWindow?) Windows может использовать Win32 Windows, OpenGL, D3D (примерно), в OpenGL, Windows/Controls, созданные в поверхности в трехмерном пространстве, которые можно отобрать в других 3D -объектах и вокруг других 3D -объектов. (Вот почему слой изображения является подключаемым интерфейсом, потому что операции рисования превращаются в вызовы OpenGL). Все могут использовать прокси, который обеспечивает сетевой интерфейс, к которому может подключиться браузер, команды Draw отправляются с BRWSER для выполнения ...
Начал вулканский слой, который упростит некоторые вещи. Интерфейс OpenGL для шейдеров может действительно использовать Vulkan в качестве бэкэнда ... но теперь они несколько гибки ... так что, возможно, внедрение более глубоких слоев API будет сделано.
Это лучше реализовано как графический интерфейс узла
Это строительство библиотеки управления на зарегистрированных обратных вызовых классов элементов управления. Библиотека построена на интерфейсах изображения и рендеринга ... она отслеживает вещи на более высоком уровне, такие как ползунки, списки, кнопки, и предоставляет пользовательские расширения на основе каждого класса.
Dekware Build Product - это Mud Client/Mud. Документация и загрузки предварительно построенных версий доступны по адресу d3x0r.org или www.d3x0r.org.
Узел аддон, который открывает поддержку основной библиотеки JavaScript. Предоставляет WebSockets, HTTP, JSON, JSOX Parsers, интерфейс SQLite/ODBC.
Пакет NPM и репозиторий GIT
Узел аддон, который включает все интерфейсы от Sack.vfs, но также начинает реализовывать интерфейс в подсистему GUI.
Пакет NPM и репозиторий GIT.
Репозиторий GIT представляет собой ветвь, основанную на мастере Sack.vfs, и является просто дополнением к существующим интерфейсам; Хотя он изменяется от использования амагламации Sack.cc, он использует внешний проект Cmake для загрузки хранилища мешка с GitHub.