Итак, можно подвести некоторые итоги и сказать, что в slackware-13.1 будет kernel-2.6.33.x, glibc-2.11.x, gcc-4.4.x, bash-4.1.x (!), mesa-7.8.x, xorg-1.7.x, gtk+-2.18.x, qt-4.6.x, kde-4.4.x. Неожиданно в -current сейчас добавлено довольно большое количество новых пакетов. Стабильный релиз обещан в скором времени.
Синхронно выпущены обновления для нескольких библиотек и программ от Xiph.Org:
libao-1.0.0
libvorbis-1.3.1
vorbis-tools-1.4.0
libogg-1.2.0
Основное нововведение в новых версиях — значительное улучшение поддержки многоканального звука. Конечно же не обошлось и без других улучшений и исправлений ошибок.
В libao:
Обновлены многие драйверы.
Добавлено несколько новых драйверов: Roar Audio, OpenBSD SNDIO.
Удалены драйверы solaris, alasa05, mmsound.
Добавлена поддержка MacOSX >= 10.5.
Исправлено множество ошибок.
В libvorbis:
Улучшено кодирование в 5.1 на 44.1/48kHz.
Исправлена ошибка при кодировании звука на 16kHz, приводящая к ухудшению качества результата.
Множество изменений направленных на: улучшение устойчивости, устранение утечек памяти, решение проблем со сборкой.
Устранены падения, переполнения.
В vorbis-tools:
Ogg123 теперь реагирует на Ctrl+C.
Ogg123 стал играть треки в директории в алфавитном порядке.
Добавлена поддержка WAVEFORMATEXTENSIBLE.
Улучшены переводы.
Множество исправлений ошибок.
В libogg:
При больших размерах пакетов, стандартное поведение при сбросе страниц изменено так, чтобы реже обходить страницы и использовать больший размер страниц. (Оригинал: Alter default flushing behavior to span less often and use larger page sizes when packet sizes are large.)
Устранены проблемы со сборкой при использовании некоторых компиляторов.
После затяжного периода разработки (больше 3х лет), выпущена свежая версия бесспорного хита в мире свободных игр — SuperTux-0.3.3. Игра выполнена в стиле известной игры Super Mario. Сюжет прост — Tux'у предстоит спасти свою подружку Penny из волосатых лап злодея.
В новой версии изменений настолько много, что сами авторы затрудняются вспомнить их все. Не смотря на это, доподлинно известно, что в новой версии:
Произведена большая работа над кодом, исправлено много ошибок.
Есть у меня программа, в нераспараллеленой версии работает корректно, всегда, valgrind на неё не ругается, gcc предупреждений не выдаёт. Когда я её распараллеливаю с помощью openmp (только одна функция распараллелена) у неё появляется один забавный глюк. Если я программу запускаю просто так, то она работает; если указываю OMP_NUM_THREADS=2 или 4, то тоже работает без проблем, но если я ставлю OMP_NUM_THREADS=3 или 5, то она может дойти до конца, всё записать и зависнуть, совсем. Проверено на двух машинах: на gcc-4.3.3 и 4.4.3. Пробовал проверить valgrind'ом, но оказалось, что он не поддерживает openmp (можно добавить поддержку, но нужно пересобирать компилятор). Скачал вчера intel thread checker — он тоже ничем не помог — при зависании программы он зависает вместе с ней :) Если запустить thread checker с независающим вариантом, то он выдаёт предупреждения практически на всё (218 штук), при этом от этих предупреждений картина не проясняется, вообще.
Посоветуйте мне что-нибудь для отлова подобных ошибок. Может быть кто-нибудь сталкивался уже с подобным? Могу показать код если кто-то хочет на него смотреть :)
GMP — библиотека для вычислений с числами заданной точности.
В новой версии:
Тщательно пересмотрено умножение, внесено множество улучшений.
Также ревизии подверглось деление и mod, для некоторых случаев улучшены временные оценки.
Улучшена временная оценка для функции mpz_powm.
Для внутренней поддержки умножения реализован алгоритм Малдера, что привело к уменьшению нижних границ для значений входных параметров некоторых функций.
Вычисление обратных значений, и 1/N и 1/N mod B^n, было улучшено.
Для функции mpz_perfect_power_p использован ассимптотически более быстрый алгоритм.
Функция mpz_remove значительно ускорена.
Специфичные для Intel Atom и Via Nano оптимизации.
Множество новых mpz_* и mpn_* функций.
Поддержка Windows64.
Улучшен подбор оптимального алгоритма для входных данных. Количество границ увеличено, и сами они откорректированы.
Подскажите какую-нибудь литературу про обработку ошибок в C. Интересуют больше не технические аспекты, а вопросы правильности и разумности.
В частности интересует следующее:
1. Правильно ли сообщать информацию об ошибках через errno или стоит свой аналог такой переменной завести? Что делать если хочется положить в errno код ошибки отличный от стандартного?
2. Как вообще определить, что при выполнении математической операции возникла ошибка ERANGE?
3. Где в коде следует выводить сообщения об ошибках? Как я понимаю, в библиотеке не должно вообще ничего выводиться, всё только через возвращаемые значения и errno. А вот в программе следует выводить сообщение об ошибке сразу там где она возникла, или стоит стараться отделять рабочие функции и функции общающиеся с пользователем?
Поставил недавно trac, внутри используются git и postgresql. Не устраивает производительность того что получилось. Подскажите как можно было бы ускорить всё это хозяйство. Говорят, что нужно капать в сторону psyco, apache mod_wsgi. С python не знаком, не знаю как этот psyco использовать. Может просто при сборке с помощью `python setyp.py` можно какие-то оптимизации задать?
P.S. Есть ли где-нибудь в свободном доступе та система управления проектами, которую google использует для code.google.com ?
oggz включает в себя liboggz и oggz tools, которые предоставляют возможность редактировать, проверять ogg файлы.
Библиотека liboggz предназначена для чтения и записи ogg файлов и потоков. Её использование даёт некоторые преимущества относительно libogg, такие как поддержка поиска, проверка корректности данных и интерпретация временных меток.
Утилиты oggz дают возможность манипулировать ogg файлами. oggz понимает celt, cmml, flac, kate, pcm, speex, theora и vorbis потоки. В частности с помощью oggz-chop возможно трансляция части ogg файла в сеть по http.
По сравнению с 0.9.9 можно отметить следующие изменения:
Исправлена сборка на arm, sh4 и GNU/kFreeBSD.
Исправлены несколько случаев некорректной работы oggz-chop.
Добавлена новая утилита oggz-codecs, которая выводит список кодеков в контейнере.
Добавлена страница руководства для oggz, добавлены примеры для других утилит.
Добавлена новая api функция для ограничения диапазона поиска.
Правильно обрабатываются потоки theora версии > 3.2.
Собрал тут из trunk'а vorbis-tools и, о чудо, теперь если один и тот же файл закодировать oggenc'ом два раза, то oggz-diff -S показывает таки нулевую разницу. Это успех, ящитаю.
P.S. А почему я не могу в эту тему ответить? Устарело?
Теперь в slackware можно делать не только .tgz, но и .tbz, .tlz, .txz. Чтобы создать пакет с любым из форматов достаточно просто указать makepkg имя пакета имеющее соответствующий суффикс. Если кто в курсе, объясните разницу между lzma и xz. Вроде на одном и том же коде основаны.
Делаю export GNUTERM=wxt, запускаю octave. При рисовании графиков появляется окно gnuplot с интерфейсом на wxwidgets. Проблема в том, что в консоль с octave'ом окошко с графиком сыпет кучу предупреждений типа:
(<unknown>:3793): Gtk-WARNING **: Загружаемый модуль тем не найден в module_path: «murrine»,
(<unknown>:3793): Gtk-WARNING **: Загружаемый модуль тем не найден в module_path: «murrine»,
** (<unknown>:3793): WARNING **: Invalid borders specified for theme pixmap:
/home/user/.themes/qt4/gtk-2.0/Toolbar/toolbar.png,
borders don't fit within the image
** (<unknown>:3793): WARNING **: invalid source position for horizontal gradient
Собственно можно ли эти предупреждения куда-нибудь перенаправить или вообще отключить? Желательно чтобы сообщения об ошибках octave'а всё таки выводились.
После почти года после начала переписывания проекта практически с нуля вышла первая стабильная версия гоночного симулятора VDrift. В новой версии нет новых функций, но исправлено огромное количество ошибок, сильно улучшена стабильность, улучшена производительность. Физика также подверглась переработке. (!!) Сильно улучшена отрисовка шрифтов.
Появилась новая версия замечательного инструмента для разработчиков Valgrind. Valgrind — это инструмент, позволяющий находить недостатки в программах, такие как ошибки при работе с памятью, неправильное разделение потоков, неинициализированные переменные и прочее.
В новой версии:
Поддержка glibc 2.8 и 2.9.
Поддержка gcc 4.4.
memcheck способен показывать происхождения неинициализированных переменных.
Алгоритм, используемый helgrind, был полностью изменён. Теперь он даёт меньше ложных срабатываний, имеет лучшую производительность, поддерживает потоки Qt4.
Для drd сильно улучшена производительность и уменьшено использование памяти, добавлена поддержка Boost.Thread, Qt4, glib, OpenMP и многое другое.
Добавлен новый экспериментальный инструмент ptrcheck, проверяющий ошибки при работе с указателями.
Множество других небольших изменений и исправлений ошибок.