bismon (это временное имя) - это постоянный монитор , который (в будущем) будет взаимодействовать с компилятором GCC через плагины. Это (или станет) каким -то образом преемником моего старого проекта GCC Melt; Среднесрочной целью также является статический анализ исходного кода программы с помощью GCC. Репозиторий исходного кода (GPLV3+ Licensed) находится на https://github.com/bstarynk/bismon .. My (Basile bismon , работающий в CEA, список во Франции). При анализе какого-то программного обеспечения IoT, кодируемого в C или C ++ и (кросс), скомпилированном GCC на некотором рабочем столе Linux. В 2019 году - 2021 год развитие bismon также частично финансируется проектом Decoder H2020 в соответствии с грантовым соглашением 824231 (связанным с его постоянным монитором знаний WP1).
В настоящее время (начало 2021 года) bismon все еще находится в бета -стадии, и это бесплатное программное обеспечение по лицензии GPLV3+. Он предназначен для рабочей станции разработчика Linux x86-64 настольной работы (не будет работать на Windows, Macosx или Android).
Некоторая все еще неполная документация (в качестве технического отчета doc/bismon-doc.pdf в PDF) может быть сгенерирована (с помощью make make doc ; эта команда требует, чтобы вы имели записи $HOME/tmp/ каталог). Ранний (неофициальный) проект этого отчета может быть доступен на http://starynkevitch.net/basile/bismon-doc.pdf
В то время как Bismon в настоящее время финансируется проектами H2020 с целями статического анализа, пожалуйста, обратите внимание, что Bismon может позже -когда более зрелый, после 2024 года- вероятно, будет использоваться как какая-то общая структура , с большим количеством дополнительной работы (годы, а не месяцы), для многих других целей (наиболее значимым ограничением-это ваше воображение и мощность вашего компьютера), включая Scialifity Scialifits. Из сознательной машины , ISBN: 978-1848211018), сложные настольные графические среды, многие интерактивные веб-программные инструменты, одновременно используемые некоторыми командами, или объектные базы данных или соответствующие проблемы. Поскольку Bismon является лицензированным GPLV3+, любое будущее программное обеспечение, использующее его, IMHO, практически также быть GPLV3+ (но другие схемы лицензирования могут быть возможны, свяжитесь со мной на [email protected]
[Стандарты кодирования совместного удара AIRICULE C ++] (https://www.stroustrup.com/jsf-av-rules.pdf)
[Zero-overhead Detrinistic Excections: Throwing значения] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0709r4.pdf)
[Стандартизация C ++, документы 2021] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/)
Разработайте какой-то вид высокоуровневого (более выразительного, более декларативного) языка, специфичного для домена , для облегчения анализа исходного кода статического программы над GCC и генерировать плагины GCC для него, так же мотивации, что и GCC, расплава (и более широко связанные мотивации-к кокциннелле, Frama-C, Rascal, Crossminer, Clang, анализе, Clasp etc ...).
Важные особенности и цели этого языка, специфичного для домена, и его реализации включают:
ортогональная настойчивость; Это основная особенность (полезная для анализа статического исходного кода всей программы анализируемой программы, сделанной из нескольких единиц перевода, каждая из которых составлена независимо), которая не была реалистично добавлена для расплава GCC, поэтому требует полной редизайна. Ожидается, что процесс bismon будет относительно долгоживущим-сервер, как-и сохраняет большую часть своих данных от одного запуска до следующего (в store*.bmon текстовые файлы). В будущем процесс bismon будет общаться с процессами компиляции gcc или g++ (Cross) (с использованием некоторого плагина GCC, который будет генерироваться самим bismon )
Динамическая набор, как в Python, Scheme, Ruby, JavaScript, ... (и каким -то образом таять).
многопоточный, но без какого-либо Гила. Небольшой пул ниток рабочих потоков неоднократно и одновременно извлекает задачи из глобальной повестки дня. Каждая задача работает быстро (миллисекунды) в некотором потоке работников и может обновить эту повестку дня (например, добавив себя для продолжения).
рефлексивный
гомоиконик
Точно собрано мусор
декларатив, с хорошим сопоставлением и правилами формализмом
Нагрузка и скомпилирован в C, возможно, некоторые детали с использованием GCCJIT.
Так метапрограммировано
Сгенерирование плагинов GCC (в C ++), которые будут взаимодействовать с bismon с помощью некоторого механизма RPC
Обратите внимание, что синтаксис и семантика (все еще незарегистрированные) bismon являются незаконными и могут быть несовместимы.
Когда bismon будет завершен для использования, он обычно используется небольшой командой разработчиков, работающих вместе над некоторым (общим) программным проектом, кодируемым в основном в C или C ++ (и предпочтительно в проекте свободного программного обеспечения).
Большая часть bismon находится в C99 или C11 (включая увеличивающее количество сгенерированного C-кода в modules/ ), но несколько рукописных кодов находятся в C ++ 14 (особенно misc_BM.cc и BM_makeconst.cc METAPROGRAM, генерирующие заголовки C).
На Linux/x86-64 (например, Debian/нестабильный или бастер или недавний Ubuntu 18 или 19) ( без дополнительных исправлений или работы, Бисмон не будет работать на 32 битах машин!):
Вы должны иметь возможность скомпилировать множество программных пакетов с открытым исходным кодом для их исходного кода. У вас должна быть недавняя система GNU/Linux с корневыми Acesss, предпочтительно 32-гигабайт или более оперативной памяти, некоторым процессором x86-64 с не менее 4 ядрами и не менее 250gbytes свободного дискового пространства. Ожидается, что вы будете свободно свободно с интерфейсом командной строки Linux и оболочками UNIX, такими как GNU Bash или ZSH. Вы должны быть в состоянии и позволить компилировать GCC 10 или, предпочтительно, даже GCC 11 из его исходного кода и знакомы с редакторами исходного кода, такими как GNU EMACS, VIM, GEANY и т. Д. И т. Д. Вам понравилось читать SICP.
См. Также подкаканизатор зависимостей и его зависимости от Readme - возможно, не обновленные.
Недавние GCC (SO GCC 10 или предпочтительно GCC 11 ...), с включением и плагинов C ++ и JIT (проверьте с помощью gcc -v ; Если в вашей системе gcc и g++ не хватает поддержки плагинов и libgccjit, вы должны создать и установить недавний релиз GCC из его исходного кода и настройка его для предоставления). Старый GCC (например, версия 9 или ранее) не может быть использован.
'/usr/src/Lang/gcc-11.1.0/configure' '-v' '--prefix=/usr/local' '--with-gcc-major-version-only' '--program-suffix=-11' '--enable-shared' '--enable-linker-build-id' '--enable-nls' '--enable-bootstrap' '--enable-clocale=gnu' '--enable-libstdcxx-debug' '--enable-libstdcxx-time=yes' '--with-default-libstdcxx-abi=new' '--enable-gnu-unique-object' '--disable-vtable-verify' '--enable-plugin' '--enable-default-pie' '--with-system-zlib' '--enable-libphobos-checking=release' '--with-target-system-zlib=auto' '--enable-objc-gc=auto' '--enable-multiarch' '--disable-werror' '--with-arch-32=i686' '--with-abi=m64' '--with-multilib-list=m32,m64,mx32' '--enable-multilib' '--with-tune=native' 'CFLAGS=-O2 -g' 'CXXFLAGS=-O2 -g' '--enable-host-shared' '--enable-languages=c,c++,d,go,jit,lto' ....Недавний Python 3 с PIP установлен.
Документация требует кросс-компилятора A /usr/bin/mipsel-linux-gnu-gcc-8 предоставленный пакетом Debian gcc-8-mipsel-linux-gnu . Остерегайтесь, этот пакет противоречит пакетам gcc-multilib* на Debian.
Необходим Ninja Builder, версия 1.8 или более новые (и начинается с make ). Не используйте более старый (проверьте с ninja --version ; если это не работает, ваш ninja слишком стар).
Недавно требуется недавний переводчик ужигания, версия 2 или лучше (предпочтительно Guile 2.2). Я не знаю и сильно не люблю Python, а Guile Interpreter - GNU, LGPLV3+, и гораздо более знаком мне. Кроме того, концепции из диалектов LISP, таких как схема (язык, реализованный Guile ), настоятельно имеют отношение к пониманию Bismon , где Guile используется для генерации сценария build.ninja , используемого строителем ниндзя.
Недавние mailutils с усилением, то есть Debian mailutils-guile предоставляющий исполняемый файл /usr/bin/guimb .
Глиб 2.58 или лучше (что также необходимо для GTK выше), потому что необходимы некоторые процедуры низкого уровня, особенно связанные с UTF-8.
Янссон 2.12 или лучше для JSON (используется по отношению к WebSockets).
Либенион был необходим для веб-интерфейса, но удален в 27 июня 2022 года, GIT Commit a943cf687c748 или TAG no-more-ibonion-tag (с опечатки: отсутствует l ). Перед этим коммитом ищите флаг препроцессора BISMON_LIBONION .
GNU сделать 4 или лучше
CCache используется, чтобы избежать бесполезных перекомпиляций. Если у вас его нет, вам нужно отредактировать наш Makefile для сборника сгенерированных модулей.
Libbacktrace - Иногда это часть вашей системы GCC , но вам лучше установить его отдельно (например, в вашем /usr/local/ prefix)
Markdown требуется для некоторой документации, такой как эта README.md
GNU adpent (2.2.x наконец) и Астил (по крайней мере 3,1) полезны для make indent . indent теперь требуется для сгенерированных модулей.
Tardy ( tar -файл постпроцессор) используется для генерации документации.
Latex - возможно, как Texlive Suite или Luatex- и связанные с ними утилиты ( pdflatex , makeidx , bibtex ...) с черновой пейзажей и Hevea и Xindy необходимы для документации.
На Debian/нестабильный или недавний Ubuntu, apt-get install build-essential make ninja-build gcc-8 g++-8 gcc-8-plugin-dev libgccjit-8-dev ccache gcc-8-mipsel-linux-gnu inkscape hevea texlive-full xindy fonts-inconsolata ttf-ubuntu-font-family fonts-ubuntu ttfautohint guile-2.2 mailutils-guile для строительной инфраструктуры; Обратите внимание, что gcc-8-mipsel-linux-gnu является кросс-компилятором Mipsel GCC-он противоречит пакетам gcc-multilib* ; hevea texlive-full inkscape , fonts-inconsolata fonts-ubuntu необходимы для создания xindy , ttfautohint необходимы для создания документации.
Нам по-прежнему нужна apt-get install libgtk-3-dev для GTK 3. Это может привлечь много зависимостей.
И apt-get install libglib2.0-dev libjansson-dev для нашего Glib и Jansson требуют зависимости.
libbacktrace не самостоятельно упакована в Debian. Я рекомендую создавать и установить его из исходного кода, или иначе (не рекомендуется,? Но выполнимо) редактировать Makefile для использования вашего компилятора системы GCC.
libonion не самостоятельно упакована в Debian.
apt-get install markdown indent astyle tardy и apt-get install texlive texlive-full hevea
dependencies/ подкаталог предназначены для git submodule -S, связанные с libbacktrace и libonion
Возможно, вам потребуется добавить .mjs в качестве допустимого суффикса или расширения файла для application/javascript MIME в вашем системном файле /etc/mime.types mime.types. Прочитайте о модулях JavaScript в Интернете и посмотрите Debian Bug#927300.
Запустите locale , чтобы быть уверенным, что ваша локализация соответствует POSIX или английскому (британскому или американскому) в UTF-8 (например, не может быть итальянским, греческим или французским). Таким образом, это должно быть POSIX или C или en_US.UTF-8 или en_GB.UTF-8 . Возможно, вы захотите правильно установить переменные среды (по крайней мере, LANG=en_US.UTF-8 и LANGUAGE=en_US:en и LC_ALL=en_US.UTF-8 , без другой переменной среды LC_* ). См. Locale (1), Locale (7), UTF-8 (7), Locale (5), Setlocale (3). Но не просите меня понять больше этих очень тонких деталей Internationalizaion и локализации, эта тема очень сложна. Если вам все еще нужна эта работа, которая будет выполнена мной, отправьте мне электронное письмо на работе на [email protected] . Но не ожидайте, что это сделано мной до 2024 года.
Расширение файла .mjs предназначено для модулей JavaScript. Если ваш файл /etc/mime.types (используемый libonion ) не знает об этом, вам нужно добавить следующие строки (первая строка ниже, с хэш # , является комментарием; что важно, так это строка, упоминающая mjs ).
# in your /etc/mime.types for JavaScript modules
application/javascript mjs
Генерации документации нуждаются в записи $HOME/tmp/ Directory.
Основной ответственный человеческий контакт должен быть назначен в файле contact_BM (комментарии, начиная с # , принимаются внутри, но у него должна быть линия, вдохновленная John Doe <[email protected]> ). Этот файл должен быть в текущем каталоге или в вашем домашнем каталоге или явно дано с помощью --contact-file=PATH . Мой файл ~/contact_BM может быть:
# file $HOME/contact_BM
Bismon master (Basile Starynkevitch) <[email protected]>
git Возможно, вы захотите (адаптируйте это предложение и определили свой собственный кусочек на кусочке), чтобы улучшить интерактивный выход git diff в store*.bmon Persistent Data Files. Возможно, что-то, вдохновленное git config diff.bismon.xfuncname '"^«_[0-9A-Za-z_]*$"' может работать, но не совсем.
Как обычно, клонируйте этот репозиторий git , а затем используйте bismon внутри полученного источника.
Посмотрите на Makefile и отредактируйте его, если это необходимо; Возможно, обновите PREPROFLAGS= и LIBES= Lines, например, для использования GCC libbacktrace вашей системы, добавив $(shell gcc-7 -print-file-name=include) в линию PREPROFLAGS= и $(shell gcc-7 -print-file-name=libbacktrace.a) к линии LIBES= . Конечно замените 7 на 8, если это необходимо. Может быть, вам нужно явно установить GCC= и GXX= на ваши конкретные компиляторы GCC C и C ++ .
make или make -j3
Механизм постоянства проверяется за счет make redump
Программа ./bismon (временно) все еще использует GTK и Libonion. Мы хотим избавиться от GTK. Это содержит как bismongtk и bismonion .
Обязательно запустите bismon , bismongtk или bismonion с --help поначалу, чтобы понять доступные варианты программы.
bismon (по крайней мере, его веб -версия) должен знать о вас. Таким образом, вы должны зарегистрироваться один раз к нему (и это увеличит свое постоянное состояние). И bismon (более точного bismonion ) есть форма входа в систему, поэтому у вас должен быть пароль (специфичный для bismon , не связанный с любым другим паролем, который у вас есть).
Сначала вам нужно инициализировать пустой файл пароля (файл пароля по умолчанию ~/passwords_BM ; вы можете указать еще один в командной строке). Так что запустите команду touch ~/passwords_BM в терминале (оболочке), чтобы создать этот пустой файл. Затем вам необходимо ограничить его разрешение (читаемое и записываемое только пользователем Unix) с помощью chmod u+rw,go-rwx ~/passwords_BM . Наконец, проверьте с ls -ls ~/passwords_BM что этот файл является пустым и читаемым и записываемым только вами.
Тогда вы зарегистрируетесь сами. Если Alan Turing -это ваше имя или псевдо, а [email protected] ваше основное электронное письмо, поскольку ваше вторичное электронное письмо turing@localhost , вы можете добавить себя в bismon , запустив его с чем-то похожим на --contributor='Alan Turing;[email protected];turing@localhost' и --batch и --dump-after-load=. Параметры программы. Конечно, вы должны заменить Alan Turing , [email protected] и turing@localhost на то, что вам подходит. Вторичное электронное письмо (также называемое псевдоним) является необязательным. Если вы не используете его (поэтому, если вы не предоставляете псевдоним, что, вероятно, - так что замените turing@localhost на пустую строку), bismon не знает о вас больше, чем git (см. GIT config для user.email и user.name ). Вы можете даже кодировать какой -то скрипт оболочки, чтобы извлечь эту информацию о персональных данных из git и поместить ее в bismon .
Наконец, вам нужно установить свой пароль (он не связан с другими паролями на вашем компьютере или в Интернете, но должен иметь как минимум 10 символов Unicode, а цифры, буквы, пунктуации), как известно для bismon , используя опцию --add-passwords (также с --batch и --dump-after-load=. ). Чтобы установить свой первоначальный пароль на mypass!123456 Создайте некоторый временный текстовый файл (он содержит имена участников и их обновленные пароли в четком тексте, так что вы не должны сохранять его), возможно, /tmp/addpassbismon , содержащий, например, Alan Turing:mypass!123456 Add Run bismonion с --add-passwords=/tmp/addpassbismon --batch batch-batch-batch-batch /tmp/addpassbismon batch-batch-batch- batch -batch-batch-batch. Конечно, вам лучше написать некоторые сценарии сценария оболочки, и убедитесь, что у вас будет достаточно сильный пароль, которого нет в этой README.md .
Возможно, вы можете добавить несколько других пользователей (вероятно, менее десятка), которым вы доверяете, и это может работать с вами. Каждый пользователь может испортить или злоупотреблять системой bismon так легко, насколько это возможно. Тогда обязательно соответствуют GDPR, если какой -либо из ваших пользователей является европейским (а соответствие GDPR - это ваша ответственность ). Форма входа в систему имеет шаблон (с кодом из web_ONIONBM.c ) из исходного файла login_ONIONBM.thtml (и вы можете улучшить текст внутри этого файла, если хотите).
bismon Это пока не совсем используется, за исключением того, что я (Basile) в июле 2018 года (пока нет статического анализа исходного кода, пока нет генерации плагинов GCC). Если вы хотите увидеть что-то, используя GTK, запустите ./bismongtk , затем введите the_system в командном окне, помеченном New-Bismon , то и CTRL , и возвращают клавиши, нажимаемые вместе. Если вы хотите что-то увидеть через веб-интерфейс, запустите ./bismonion , затем откройте свой URL (возможно, localhost:8086/ или что-то, что было указано с помощью --web-base ) в вашем веб-браузере.
Рекомендуется время от времени работать make clean (например, ежедневно или еженедельно). При генерации файлов bismon делает резервную копию своей предыдущей версии.
Спросите меня (Basile Starynkevitch, [email protected] или [email protected] ...) для получения подробной информации.
Этот репозиторий git также содержит для удобства, Framework JQueryui 1.12 (которая имеет другую лицензию MIT) в рамках webroot/jquery-ui
Используйте его (как stopbismon ) свой собственный риск, если $HOME/bismon содержит исходный код Bismon и исполняемый файл:
#!/bin/bash -x
# script stopbismon
if [ -f $HOME/bismon/_bismon.pid ]; then
kill -TERM $(/bin/head -1 $HOME/bismon/_bismon.pid)
else
pkill bismon
fi
Это неизданное бесплатное программное обеспечение
Лицензия (GPLV3+), вероятно, не изменится (она по контракту указана в гранте колесницы). Уведомление об авторском праве, вероятно, неправильно: в сгенерированных файлах оно еще не соответствует ожиданиям GPL. Эти детали ожидают ошибки, но есть и другие ошибки.
Автор полностью осведомлен - в середине 2019 года - из нескольких ошибок в этой системе bismon - исследовательский проект - но их исправление не является приоритетом (поскольку продолжение прогрессивной начальной загрузки Bismon гораздо важнее и еще не достигнуто). Интерфейс GTK - это глюка по дизайну и часто вылетает (это не будет исправлено), и должен быть как можно быстрее заменен более полезным веб -интерфейсом - и это выполняется в середине 2019 года. Пожалуйста, свяжитесь с электронной почтой, чтобы получить возможные обходные пути. Обратите внимание, что такие временные ошибки, известные автору, не зарегистрированы как проблемы Bismon gitlab , поскольку это программное обеспечение еще не выпущено.
В Commit 24E400E4B25EA8FBD91 документация не создается.
Удаление input{appendix-bm} из файла bismon-doc.tex Не решайте эту ошибку.
Предпочтительным способом сообщить о них является добавление новой проблемы на https://github.com/bstarynk/bismon
Конечно, проблема должна быть автономной. Пожалуйста, явно дайте вывод bismon --version на вашем компьютере, если вы смогли построить bismon .
Если проблема связана с построением исполняемого файла bismon , дайте явно все команды Linux, которые вы выполняли (после изучения и успешного запуска сценария distclean-script.bash или сразу после какой-то свежей команды git clone ). Упомяните вывод git log -3 .
В качестве альтернативы (если вы не хотите добавлять проблему github ), отправьте электронное письмо (UTF-8, кодированный, HTML5 предпочтительнее) на английском языке или на французском языке (или, возможно, на русском языке, только если вы не можете отправить электронное письмо на английском или французском языке) по адресу [email protected] или [email protected]). Я постараюсь ответить на английском или французском языке (так как мой написанный русский язык так плох).
Если вам нужно отправить скриншот, прикрепите какое -то изображение, кодируемое как JPEG или PNG к вашему электронной почте.
Если вы хотите или вам нужно отправить несколько файлов, архивируйте все из них в уникальном каталоге (чье базис (1) содержит только буквы, цифры и некоторые подчеркивающие _ ) и сделайте их архив из них. Дайте мне явно команду tar , которая мне нужно запустить (на Linux), чтобы извлечь ваш архив. Вы можете предположить, что у меня есть версия GNU TAR 1.30 или лучше на моем компьютере Linux.
Если вы отправите мне какой -то код C или C ++, который будет обработан bismon , позвольте мне явно скомпилировать его и добавить комментарии (utf8, кодированный) на английском, французском или русском.
Если возможно, добавьте немного сценария оболочки (для GNU Bash или для ZSH ....), который позволяет мне воспроизводить эту ошибку, и назовите этот скрипт в вашем электронном письме или отчете об ошибке.
Мой работодатель (если вы находитесь за пределами CEA ....) может также предпочесть некоторую информацию, связанную с финансированием, формальным сотрудничеством и т. Д., Если возможно, упомянуть их явно на английском языке или на французском языке на вашем электронном письме.