LINUX.ORG.RU

C


345

5

Всего сообщений: 218

Corrode, проект транслятора из C в Rust, получил финансирование Mozilla

 , corrode, , ,

Группа Open Source

Джеймс Шарп (James Sharp), отметившийся ранее в проекте X.org, в начале мая 2016 начал разработку проекта Corrode, целью которого является трансляция программ, написанных на C, в исходный код на Rust. Corrode написан на Haskell и распространяется под GNU GPLv2.

( читать дальше... )

>>> Подробности (thesharps.us)

shahid
()

PVS-Studio для Linux

 , , ,

Группа Проприетарное ПО

Появилась версия анализатора PVS-Studio, работающая в GNU/Linux. До этого программа работала только в Windows.

PVS-Studio — это инструмент для выявления ошибок в исходном коде программ, написанных на С и C++. В случае интеграции с Visual Studio также возможна проверка проектов на C#.

PVS-Studio выполняет широкий спектр проверок кода, но наиболее удачно справляется с поиском опечаток и последствий неудачного Copy-Paste. Показательные примеры таких ошибок: V501, V517, V522, V523, V3001.

( читать дальше... )

>>> Подробности (viva64.com)

Andrey_Karpov_2009
()

kcgi 0.9.0

 , , , kcgi

Группа Open Source

Доступна новая версия kcgi — минимальной библиотеки CGI/FastCGI, написанной на C.

( читать дальше... )

В новой версии добавлены функции для преобразования даты и времени из unix (epoch) time в формат HTTP и обратно, а также исправлены различные ошибки.

Официальный сайт

>>> Подробности (bsd.lv)

cetjs2
()

Релиз компилятора SDCC 3.6.0

 ,

Группа Open Source

12 июня было объявлено о выходе новой стабильной версии Small Device C Compiler (компилятор языка C для встраиваемых устройств). Он поддерживает архитектуры 8051, DS390, Z80, Z180, Rabbit 2000, HC08, STM8 и PIC (работа в процессе). Основные изменения:

( читать дальше... )

Доступны официальные бинарные сборки для всех основных платформ. Исходные коды и документация также доступны на официальном сайте.

>>> Подробности (sourceforge.net)

ramon13666
()

dnsbalancer — демон балансировки UDP-трафика рекурсивного DNS

 , , , ,

Группа Open Source

Компания Ланет Нетворк сделала общедоступным код демона для балансировки UDP-трафика рекурсивного DNS — dnsbalancer. Демон используется для распределения клиентских DNS-запросов между многочисленными рекурсивными DNS-серверами с целью балансировки нагрузки и повышения отказоустойчивости кластера рекурсивного DNS.

Возможности dnsbalancer'а:

  • поддержка IPv4 и IPv6;
  • поддержка множества фронтендов и бекендов одновременно;
  • слежение за доступностью бекендов, игнорирование недоступных бекендов;
  • работа в многопоточном режиме;
  • поддержка правил обработки DNS-запросов с использованием регулярных выражений и выполнением различных действий над клиентскими запросами;
  • ведение статистики по фронтендам, бекендам, типам запросов и задержкам ответов.

Демон способен обрабатывать десятки тысяч запросов в секунду на виртуальной машине с несколькими ядрами. Код демона работает только под управлением ядра Linux версии 3.9 и выше.

>>> Исходный код (github.com)

post-factum
()

Состоялся релиз Nuklear — библиотеки для построения пользовательских интерфейсов, написанной на ANSI C

 , ,

Группа Open Source

11 апреля 2016 года состоялся релиз Nuklear — небольшой библиотеки для построения GUI, написанной на ANSI C.

Это минималистичный тулкит, построенный на принципах immediate mode и переданный в общественное достояние. Библиотека была спроектирована как простой встраиваемый интерфейс и не имеет никаких дополнительных зависимостей. Для рендеринга и обработки пользовательского ввода используются платформозависимые бэкенды, поверх которых построена модульная система, позволяющая спроектировать интерфейс основываясь на концепциях ввода/вывода.

Особенности

  • immediate mode
  • header only (можно использовать и как обычную библиотеку, с разделением на реализацию и заголовки)
  • написан на C89 (ANSI C)
  • небольшая кодовая база (~15kLOC)
  • ориентирован на портабельность, эффективность и простоту
  • нет зависимостей (не требуется даже стандартная библиотека)
  • настраиваемый внешний вид
  • занимает мало места в памяти, предоставляет полный контроль за потребляемыми ресурсами
  • поддержка UTF-8
  • не имеет глобального или скрытого состояния
  • модульность: вы можете скомпилировать и использовать только ту часть библиотеки, которую собираетесь использовать

Несколько примеров пользовательского интерфейса, реализованного с помощью nuklear: раз, два, три.

>>> Подробности (github.com)

Weres
()

Написал небольшую книгу для C/C++ программистов

 , , , ,

Группа Документация

Здравствуйте. Меня зовут Андрей Карпов. Сфера моих интересов - язык C/C++ и продвижение методологии статического анализа кода. На протяжении пяти лет я являюсь Microsoft MVP в номинации Visual C++. Основная цель моих статей и работы, сделать код программ немножко безопасней и качественней. Буду рад, если эта мини-книга научит вас писать более надежный код и предостережет от некоторых типовых ошибок. Немало полезного здесь можно будет почерпнуть и тем, кто занимается написанием стандартов кодирования для своих компаний.

Немного истории. Не так давно я создал ресурс, на котором делился различными полезными советами по программированию на языке С++. Ресурс не собрал ожидаемое количество подписчиков, поэтому я не вижу смысла приводить здесь на него ссылку. Сайт просуществует какое-то время, после чего уйдет в небытие. А вот советы достойны сохранения. Поэтому я доработал, пополнил эти советы и объединил их в единый текст. Желаю приятного чтения.

UPD: PDF-версия: https://yadi.sk/i/RCHauHFBr2cSs

P.S. Пользуясь случаем приглашаю всех желающих последовать за мной в Twitter: @Code_Analysis.

>>> Главный вопрос программирования, рефакторинга и всего такого (viva64.com)

Andrey_Karpov_2009
()

В ядре FreeBSD выявлено как минимум 40 ошибок с помощью анализатора кода PVS-Studio

 , , ,

Группа BSD

Святослав Размыслов из команды PVS-Studio опубликовал статью о проверке ядра FreeBSD. Разработчики PVS-Studio славятся тем, что в целях рекламы своего продукта регулярно проверяют различные открытые проекты. Пожалуй, это один из самых приемлемых и полезных способов продвижения проприетарного приложения. На данный момент они проверили более 200 проектов и выявили в них 9355 ошибок. По крайней мере именно столько ошибок содержится в базе описания дефектов на сайте компании.

Теперь очередь дошла и до ядра FreeBSD. Исходный код для проверки был взят с GitHub из ветки 'master'. По заявлению Святослава, анализатор PVS-Studio выявил около 1000 подозрительных фрагментов в коде, которые с большой вероятностью являются ошибками или неаккуратным кодом. 40 наиболее интересных фрагментов кода он описал в статье. Список предупреждений был заранее передан команде FreeBSD, и она уже начала вносить правки.

Пара слов для программистов, ещё не знакомых с PVS-Studio. Это инструмент для выявления ошибок в исходном коде программ, написанных на языках С, C++ и C#. PVS-Studio выполняет статический анализ кода и генерирует отчёт, помогающий программисту находить и устранять ошибки. На сайте компании можно увидеть более подробное описание и скачать демонстрационную версию.

>>> Подробности (viva64.com)

Andrey_Karpov_2009
()

Язык программирования Crystal 0.6.0

 , ,

Группа Open Source

Состоялся выпуск версии 0.6.0 языка программирования Crystal.

Язык программирования Crystal разрабатывается с такими целями:

  • идентичный Ruby синтаксис, либо же максимально схожий с ним
  • отсутствие необходимости указания типов переменных и аргументов методов
  • вызов кода на Си с помощью биндингов, написанных на Crystal
  • проверка и генерация кода во время компиляции
  • компиляция в эффективный нативный код

( читать дальше... )

>>> Подробности (crystal-lang.org)

redhat
()

Ядро Linux проверено статическим анализатором PVS Studio

 , , , ,

Группа Ядро Linux

Исходный код ядра Linux (3.18.1) был проверен проприетарным статическим анализатором PVS Studio, разработанным в Туле. Анализатор нашёл ряд ошибок и крайне подозрительных участков кода. Полный текст статьи можно найти на сайте компании или на habrahabr.ru.

PVS-Studio ориентирован только на Windows, поэтому для проверки исходного кода ядра Linux была написана утилита на С++, которая для каждого запущенного процесса компилятора сохраняла командную строку, текущую директорию и переменные окружения. По результатам проверки были выбраны и подробно описаны некоторые интересные сообщения.

>>> Результаты проверки ядра Linux (3.18.1) анализатором PVS-Studio (viva64.com)

Andrey_Karpov_2009
()

Starcraft портирован на ARM

 , , ,

Группа Игры

Notaz, участник проекта OpenPandora, провёл реверс-инжиниринг игры StarCraft и портировал её на ARM-платформу. Ему удалось это сделать несмотря на отсутствие исходного кода в открытом доступе.

В репозитории выложен перекомпилированный бинарник для установки которого на игровую приставку «Пандора» нужно еще скопировать несколько файлов с ПК-версии игры.

Автор порта говорит, что он дизассемблировал игру в IDA, затем конвертировал код на C с помощью инструментов собственной разработки (их пришлось написать в процессе работы специально для этой задачи), потом скомпилировал в нормальную программу и связал с библиотекой winelib, которая работает с Win32 API из-под ARM-версии wine. Задача поначалу казалась простой, но в реальности проект занял почти полгода: вылезло очень много неожиданных проблем. Так или иначе, но автор довёл дело до конца.

Теоретически, он мог бы выложить код C в открытый доступ, чтобы кто-нибудь скомпилировал версию под Android. Сейчас StarCraft запускается на Android-планшетах и смартфонах с помощью Winulator. Видео запуска
Взято с хабра.

>>> Топик автора (openpandora.org)

ZUKMAN
()

Вышла библиотека SDL 2.0

 , , , ,

Группа Игры

Выпущена новая версия кроссплатформенной библиотеки SDL — Simple DirectMedia Layer, предназначенной для решения многих задач, возникающих при разработке игр и подобных мультимедийных приложений. Например создания окна, получение событий ввода и т.д.

Основные изменения версии 2.0 по сравнению с предыдущим релизом SDL 1.2:

  • Использование аппаратного 3D ускорения
  • Поддержка OpenGL ES и OpenGL 3.0
  • Поддержка нескольких окон и дисплеев
  • Поддержка нескольких аудиоустройств
  • Поддержка Android и iOS
  • На Linux, OS X и Windows доступна обратная связь в игровых контроллерах
  • Добавлено простое API для 2D-рендеринга, которое может использовать OpenGL, OpenGL ES, Direct3D, программный или другой вариант рендеринга
  • Управление питанием (доступна информация о состоянии батареи)
  • Поддержка сенсорных экранов
  • Улучшена поддержка полноэкранного режима
  • Улучшена поддержка клавиатуры и добавлена поддержка ввода Unicode и использования IME
  • Упрощено API для доступа к игровым контроллерам.
  • Поддержка буфера обмена
  • Проведена массивная работа по рефакторингу

Также был обновлён сайт проекта.

>>> Подробности (libsdl.org)

PolarFox
()

Вышел DRAKON Editor 1.9 с поддержкой Java и С#

 , , , , , ,

Группа Open Source

Вышел DRAKON Editor 1.9, свободный кросс-платформенный редактор диаграмм визуального языка ДРАКОН.
Язык ДРАКОН обеспечивает наглядное и простое для понимания представление алгоритмов. Области применения:

  • составление спецификаций для ПО и технических заданий;
  • документация ПО;
  • собственно программирование.

В этой версии:

  • Генерация кода на языках Java и C#.
  • Новый генератор кода для скриптовых языков.
  • Вставка изображений горячими клавишами.
  • Список ранее открытых файлов.
  • Возможность менять шрифты.

Перечень языков программирования, поддерживаемых в версии 1.9:

  • Java
  • C#
  • простой C и C++
  • Python
  • Tcl

Интерфейс редактирования в DRAKON Editor оптимизирован для диаграмм языка ДРАКОН.
Поддерживаемые ОС: Linux, Mac OS, Windows.

>>> Сайт проекта (sourceforge.net)

rykkin
()

Руководство по созданию простой UNIX-like ОС.

 , , , ,

Группа Документация

Английский студент James Molloy опубликовал в своем блоге пошаговое руководство по созданию ОС для x86 процессоров. Данная ОС имеет все основные части современных операционных систем, таких как виртуальная память, VFS, многозадачность и другие. Данное руководство состоит из фрагментов исходного кода (на С и Assembler) и детального объяснения принципов его работы, а также технических данных о работе процессора, описание некоторых регистров, и т. п.

>>> Руководство (jamesmolloy.co.uk)

urxvt
()

Опубликован новый стандарт языка C: C11

 , ,

Группа Документация

Международная Огранизация по Стандартизации (ISO) опубликовала новый международный стандарт языка программирования C: ISO/IEC 9899:2011, ранее известный как C1X. Основные изменения:

  • поддержка многопоточности;
  • улучшенная поддержка юникода;
  • обобщенные макросы (type-generic expressions, позволяют статичную перегрузку);
  • анонимные структуры и объединения (упрощают обращение ко вложенным конструкциям);
  • управление выравниванием объектов;
  • статичные утверждения (static assertions);
  • удаление опасной функции gets (в пользу безопасной gets_s);
  • функция quick_exit;
  • спецификатор функции _Noreturn;
  • новый режим эксклюзивного открытия файла.

Кроме того, определен ряд необязательных для реализации возможностей, включая новый набор безопасных функций (в т. ч. для работы с массивами с проверкой границ). В этот список также попали возможности, которые в предыдущем стандарте считались обязательными: комплексная арифметика, массивы переменной длины.

Некоторые возможности нового стандарта уже поддерживаются компиляторами GCC и Clang. Стоит, однако, отметить, что полной поддержки предыдущего стандарта C99 в этих и большинстве других компиляторов нет.

Последний черновик стандарта

>>> Подробности (iso.org)

unsigned
()

Вышел DRAKON Editor 1.5 с генерацией кода

 , , , ,

Группа Open Source

Вышел DRAKON Editor 1.5, свободный кросс-платформенный редактор диаграмм визуального языка ДРАКОН.
Поддерживаемые ОС: Linux, Mac OS, Windows.
В этой версии:
- Генерация кода на C, C++, Python, Tcl.
- Процесс редактирования сделан более удобным: при перемещении линий теперь перемещаются все связанные с ними объекты.
- Множество улучшений пользовательского интерфейса (переход к диаграмме по имени, Find all references, Go to definition и пр.)

>>> Сайт проекта (sourceforge.net)

rykkin
()

Intel открыл исходные тексты проекта Intel Cilk Plus

 , ,

Группа Open Source

Компания Intel открыла исходные тексты проекта Cilk Plus, расширения С и С++, серьезно упрощающего разработку многопоточных приложений или использование параллельных вычислений. Сообщается, что при использовании данного инструмента скомпилированные приложения имеют большую производительность в многоядерных системах, чем приложения, оптимизированные другими способами.

Расширение Cilk Plus добавляет в язык С/С++ три ключевых слова - _Cilk_spawn, _Cilk_sync и _Cilk_for, - а также выражения для объявления массивов, указания компилятору, а также некоторые другие единицы языка. Кроме того, многие нововведения заметно упрощают и делают более понятным для разработчика процесс отладки многопоточной программы.

Уже существует ветка компилятора GCC 4.7 со встроенным Intel Cilk Plus, а также официальная библиотека времени исполнения.

Расширение основано на совместных научных разработках Intel и MIT, проводившихся около 20 лет назад. Открытая реализация технологии может быть легко добавлена в уже написанные приложения, в результате чего получается масштабируемая система, способная работать с высокой производительностью многопоточно на сотнях ядер.

Спецификация

>>> Подробности (cilkplus.org)

ins3y3d
()

Doom2D:Rembo 1.35.1 — порт легендарной игры для Linux

 ,

Группа Игры

Легендарная двухмерная платформенная аркада для DOS по мотивам просто-таки культовой стрелялки от id Software DOOMDoom2D авторства команды отечественных разработчиков из Prikol Software® — Алексея Волынскова, Владимира Калинина и Евгения Ковтунова, вышедшая, минуточку, в 1996(!) году, после открытия исходных кодов, была недавно портирована на Linux программистом из славного украинского города Ривне rembo55.

Исходный код игры, размещённый в открытом доступе занимавшимся собственно программированием движка Doom2D Алексеем Волынсковым сперва на сайте российского разработчика игр Gaijin Entertainment и с тех пор бережно хранимый на форуме Doom2D:forever, был написан преимущественно на C и немного на ассемблере и претерпел следующие изменения при портировании:

  • все ассемблерные функции, кроме обработки музыки, переписаны на C с использованием библиотеки Simple DirectMedia Layer (SDL)
  • полностью переписан код опроса клавиатуры: вместо считывания сканкодов нажатых клавиш используется SDL text input API
  • переписан код, отвечающий за позицию и размер окна обзора игроков в режиме разделённого экрана
  • доработан код выравнивания меню по центру экрана
  • все функции работы с файлами заменены на аналогичные из stdio.h
  • меню переведено на английский
  • изменения в параметрах запуска как из командной строки, так и для указания в конфигурационном файле:
    • добавлены
      • изменение разрешения экрана
      • режим «случайной» музыки
      • указание длительности мелодии
    • ликвидированы
      • указание частоты звука
      • указание порта звуковой карты
      • указание DMA звуковой карты

>>> Загрузить исходный код

>>> Загрузить бинарную сборку

>>> Официальный сайт (google.com)

rembo55
()

Статус готовности CLang к сборке ядра Linux

 , , license bsd, lll, , , ,

Группа Ядро Linux

В прошлом октябре был анонсирован проект по адаптации LLVM компилятора CLang к сборке ядра Linux. С тех пор прошло более полугода, и на днях разработчики опубликовали свой отчет о проделанной работе.

В целом:

  • Удалось получить работающую сборку ядер 2.6.37 и 2.6.38 (для некоторых конфигураций)
  • KVM и Xen использовать нельзя, причем последний пока даже не компилируется
  • Компилируются примерно 90% драйверов ядра, многие работают
  • Некоторые поставляемые сторонними вендорами драйвера (Broadcom, NVIDIA) работают отлично
  • Можно использовать многопроцессорные конфигурации (правда, только на x86), однако в некоторых случаях они требуют дополнительных усилий по доработке компилируемого кода

Что не работает:

  • Ассемблер для генерации кода реального режима (директивы code16gcc), поэтому, невозможно откомпилировать код начальной загрузки (для этой цели используется gas)
  • GCC-расширения языка C (некоторые работают, некоторые нет)
  • Опции генерации и оптимизации кода: -mregparm, -fcall-saved-reg, __arch_hweight*(), -pg, атрибут no_instrument_function, -fno-optimize-sibling-calls

Несмотря на возникающие трудности, разработчики полны энтузиазма. Свой проект они назвали LLL project, что расшифровывается как LLVM Linux project.

>>> Подробности (lwn.net)

ttnl
()

GNU Scientific Library (GSL) 1.15

 , , , , , , pdl, pspp,

Группа GNU's Not Unix

6 мая 2011 года была анонсирована версия 1.15 GNU Scientific Library (GSL) - библиотеки для вычислений в прикладной математике и науке.

GSL является частью проекта GNU и распространяется на условиях GNU GPL.

GSL написана на C и содержит значительное количество функций - от элементарных математических операций и операций с комплексными числами до численных методов дифференцирования, интерполяции, аппроксимации, решения дифференциальных уравнений, wavelet-преобразования и многих других.

Ознакомиться со списком категорий вычислений можно на википедии или скачав архив с исходными кодами.

В очередной версии, вышедшей через 14 месяцев после предыдущей версии 1.14, появился ряд новых функций, а также были исправлены некоторые ошибки. С подробным списком изменений можно ознакомиться в архиве с исходными кодами или он-лайн в репозитарии GSL на bzr.savannah.gnu.org/lh/gsl/

GSL используется такими проектами как PDL (Perl Data Language), MathGL, PSPP.
Библиотека может оказаться полезной как студентам, аспирантам, преподавателям в учебных и научных целях, так и разработчикам специализированного программного обеспечения.

На странице GSL на gnu.org можно найти информацию о поддерживаемых платформах, руководства, информацию о расширениях и связанных проектах.

>>> Исходный код GSL

>>> Страница GSL на gnu.org (gnu.org)

adriano32
()