LINUX.ORG.RU

Сообщения unsigned

 

Boost 1.82

 ,

Группа Разработка

Вышла новая версия Boost, набора кроссплатформенных библиотек C++. Некоторые крупные изменения:

  • более 20 библиотек запланировали отказ от поддержки C++98 в течение двух следующих релизов; минимальным требованием станет компилятор с поддержкой C++11 (например, gcc 4.8 и выше);
  • некоторые библиотеки (Math, Multiprecision) повышают требования к стандарту до C++14 (gcc 5, clang 5);
  • Mysql: новая библиотека на основе Asio, клиент MySQL;
  • Unordered: unordered_node_map, unordered_node_set - новые контейнеры на основе открытой адресации.

А также множество улучшений и исправлений в Core, Asio, Filesystem, JSON, Math, URL и других библиотеках.

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

unsigned
()

Планы на C++17

 

Thoughts about C++17 by Bjarne Stroustrup. Список обсуждаемых фич большой, его часть:

So here is my top-ten list for C++17 (no order within the list):

  • Concepts (they allows us to precisely specify our generic programs and address the most vocal complaints about the quality of error messages)
  • Modules (provided they can demonstrate significant isolation from macros and a significant improvement in compile times)
  • Ranges and other key STL components using concepts (to improve error messages for mainstream users and improved the precision of the library specification “STL2”)
  • Uniform call syntax (to simplify the specification and use of template libraries)
  • Co-routines (should be very fast and simple)
  • Networking support (based on the asio in the TS)
  • Contracts (not necessarily used in the C++17 library specification)
  • SIMD vector and parallel algorithms
  • Co-routines
  • Library “vocabulary types”, such as optional, variant, string_view, and array_view

Еще предлагаются паттерн-матчинг, транзакционная память и operator.().

Надеются успеть к 17, и уже планируют корректирующий C++20.

unsigned
()

Мусорный вывод

 

Имеется самосборный git на очень старом линуксе с koi8-r. Он работает, но diff и log выдают мусор (escape-коды):

ESC[1mdiff --git a/include/rmd.h b/include/rmd.hESC[m 
ESC[1mindex 169f0bf..b6fe77f 100644ESC[m 
И так каждая строчка. Если конвеером прогнать через cat/less - мусор исчезает.

Можно ли вылечить?

unsigned
()

День борьбы с DRM

 

Сегодня Day Against DRM. O'Reilly на один день дает скидку 50% на все электронные книги.

http://shop.oreilly.com/category/deals/day-against-drm.do

unsigned
()

Что нужно добавить в C?

 

Расскажите, что бы вы хотели добавить в си? Только то, что реально можно добавить, не делая при этом новый язык. Просто фичи, которых не хватает.

Или покритикуйте мой список.

  • Константы. #define - препроцессор, const не работает полноценно в compile-time, enum только для целых и вообще для другого .
  • Лямбды (анонимные функции) - для удобства коллбеков. Можно без замыканий, т. к. они много скрывают.
  • Модули, если возможно. Для изоляции единиц трансляции.
  • Интроспекция (typeof, хотя бы) - для обобщенного программирования.
  • Более развитая макросистема - для того же. Например, возможность макросы раскрывать в директивы препроцессора.
  • Пространства имен, чистые функции, switch по составным типам, case с диапазоном - для сокращения кода.
  • Аналоги volatile и restrict с более точным контролем - для микрооптимизации.
  • Доступ к стеку вызовов, goto между функциями - для трюков типа трамплинов.
  • В стандартной библиотеке - строки, контейнеры, foreach, большие числа. Возможно, сокеты.
unsigned
()

0install переписан на OCaml

 ,

Немного дилетантское, зато беспристрастное и прагматичное сравнение нескольких ЯП. Автор 0install решил переписать свое творение с питона, поскольку ему надоело бороться с багами, вызванными динамичностью языка (многие из них возникли при переходе на тройку и всё еще продолжают вылезать), к тому же не всегда хватает скорости. Был проведен сравнительный анализ нескольких кандитатов:

http://roscidus.com/blog/blog/2013/06/09/choosing-a-python-replacement-for-0i...

http://roscidus.com/blog/blog/2013/06/20/replacing-python-round-2/

Коротко:

- Python - отличная выразительность, удобный деплой, популярность. Но медленный и никаких статических проверок.

- OCaml - победитель. Почти все возможности питона, но быстрый, с хорошим отловом ошибок. GUI пишется проще чем на питоне. http://roscidus.com/blog/blog/2014/02/13/ocaml-what-you-gain

- Rust - уверенный лидер. Отброшен из-за незрелости.

- Go - уверенный аутсайдер.

- ATS - потрясающая скорость, но слишком нечеловеческий язык.

- Haskell - хороший вариант, но идеологически далек от питона, извращеннее окамла, у библиотек нестабильный API.

- C# - неплох, но жирный и медленный.

Автор, до того не знавший окамла, теперь работает с ним за деньги.

unsigned
()

Релиз «The Rook’s Guide to C++»

 , ,

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

Вышла в свет первая версия свободного учебника по C++. Учебник рассчитан на начинающих, в первую очередь студентов, и знакомит с основными понятиями языка.

На написание книги было собрано в 10 раз больше запрошенных $500. Книга написана за 36 часов профессором Norwich University Джереми Хенсеном и 25 студентами.

Книга распространяется под лицензией CC BY-NC-SA, исправления и дополнения приветствуются. В скором времени ожидается печатная версия.

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

unsigned
()

OSv — новая операционная система для виртуальных машин

 , ,

Группа Open Source

Представлена новая операционная система, разработанная специально для облачных окружений — OSv.

Разработчики указывают, что хотя Linux и хорошо зарекомендовал себя как гостевая ОС, он является ОС общего назначения, он слишком большой, сложный и дублирует множество операций, выполняемых гипервизором или JVM. Всё это делает Linux медленным и затрудняет внедрение инноваций.

OSv, напротив, спроектирована специально как ОС для выполнения единственного приложения на виртуальной машине. Она работает в нулевом кольце, в едином адресном пространстве (полагаясь на защиту JVM), использует алгоритмы без блокировок и тесно интегрируется с JVM. Она очень компактна и быстра; полная загрузка занимает менее одной секунды.

OSv поддерживает KVM, XEN и Amazon EC2, планируется поддержка VMware. Система использует ZFS, управляется по SSH, обладает REST API для автоматизированного управления. Упор делается на запуск приложений, написанных на Java; также возможен запуск модифицированных приложений на C. В настоящее время успешно запускаются, в частности, Netperf, Memcached, Cassandra, SpecJVM.

Система написана на C++11 бывшими разработчиками KVM в Linux и опубликована под лицензией BSD.

Презентация

>>> Подробности (huji.ac.il)

unsigned
()

Кармак и хаскель

 

http://www.youtube.com/watch?v=1PhArSujR_A&list=PLqSz8wYk5VJTsadQnU9EId6G...

Кармак с энтузиазмом рассказывает, как с головой погрузился в Haskell и Scheme, объясняет, почему хаскель невероятно крут и почему сегодня он бы, вероятно, сделал QuakeScheme вместо QuakeC. Он пишет на хаскеле порт wolf3D.

Другие новости: SICP рулит; строгая статичная типизация рулит; сборка мусора рулит.

unsigned
()

Языковый базис

Интересно, какие ЯП могут составить наименьшее множество наиболее простых языков, хорошо реализующих все существующие концепции программирования. Так, чтобы любой другой язык являлся комбинацией этих языков, а сами базисные языки имели бы как можно меньше пересечений.

Другими словами, это оптимальный набор языков для обучения программированию.

Какие языки вы бы предложили?

unsigned
()

Простой отладочный вывод

 

Как лучше сделать сабж? Нужен обычный поток (или что-то на него похожее), который либо превратится в std::cerr, либо уйдёт из кода.

Я пробовал так:

// debug.hpp
#include <iostream>

static struct Debug {
	template <typename T> Debug& operator<<(T arg)
	{
		(void)arg;
#ifdef DEBUG
		std::cerr << arg;
#endif
		return *this;
	}
} dbg;

// main.cpp
#include "debug.hpp"
//#include <qapplication.h>

int main()
{
	dbg << "Hello" << std::endl;
}

Это почти работает, но не является потоком (что простительно) и не уживается толком с Qt:
test.cpp: In function `int main()':
main.cpp:6: no match for `Debug & << {unknown type}'
/usr/lib/qt-3.3.3/include/qcstring.h:135: candidates are: class QDataStream & operator <<(QDataStream &, const QByteArray &)
/usr/lib/qt-3.3.3/include/qcstring.h:243:                 class QDataStream & operator <<(QDataStream &, const QCString &)
/usr/lib/qt-3.3.3/include/qstring.h:828:                 class QDataStream & operator <<(QDataStream &, const QString &)
/usr/lib/qt-3.3.3/include/qpoint.h:103:                 class QDataStream & operator <<(QDataStream &, const QPoint &)
...
Проблема в endl. Если убрать шаблон и явно записать все варианты - то работает, но копипаста слишком много.

1. Почему не работает в таком виде?

2. Можно ли сделать лучше (но не сильно сложнее)?

unsigned
()

Планшет для программиста

Посоветуйте, что подойдёт для работы с кодом? Набирать код, собирать и отлаживать не планируется, в основном - разбираться в уже написанном. Т. е. нужны по большому счёту подсветка кода и удобная навигация. Языки разные, начиная с си.

Есть такое или я хочу странного?

unsigned
()

Надёжная проверка сигнала

 

Сервер большую часть времени проводит в msgrcv. Нужно, чтобы он корректно завершался по SIGTERM, поэтому в обработчике сигнала я устанавливаю глобальный флаг, который потом проверяю:

void sig(int)
{
    quit = 1;
}

int main()
{
    for(;;) {
        if(quit)
            throw SigException();
        // здесь может прийти сигнал
        msgrcv(...);
        if(quit)
            throw SigException();

        some_work();
        msgsnd(...);
    }
}
Всё бы хорошо, но если сигнал придёт в указанный момент, то обнаружится это только при поступлении очередного запроса, что создаёт впечатление потерянного сигнала. Можно ли избежать этого?

unsigned
()

Интерактивное обучение

 ,

Для тех, кто хочет освоить vim, но боится, что не сможет из него выйти:

http://www.openvim.com/

unsigned
()

Amazon отказал в размещении Arch Linux Handbook

 , ,

Группа Open Source

Несмотря на наличие Arch Linux Beginners' Guide в свободном доступе под лицензией GNU FDL, некоторые пользователи попросили разместить книгу в магазине Kindle Store. Dusty Phillips, оформивший книгу по всем правилам, натолкнулся на неожиданное сопротивление компании Amazon:

Мы рассмотрели предоставленную вами информацию и решили заблокировать продажу книги через Kindle Store. Содержание книги очень похоже на имеющееся в свободном доступе в сети, и мы не уверены, что у вас имеются эксклюзивные права на публикацию. Это может привести к недовольству клиентов, поэтому недопустимо.

В ответ Dusty, выразив недоумение по поводу невозможности публикации свободной книги, разместил книгу по адресу: http://archlinux.ca/arch_linux_handbook_3.mobi

>>> Подробности (archlinux.me)

unsigned
()

Сборка мусора на умных указателях

 

Многие пользуются shared_ptr, немногие - Boehm GC, а почему не объединить их преимущества, сделав mark-n-sweep на умных указателях? Это бы решило проблемы обоих вариантов (вероятно, за счёт большего расхода памяти).

Или такой вариант применяется, просто я не встречал?

unsigned
()

Objective-C обошёл C++

 ,

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Объектный C, продолжая крутой подъём последних лет, впервые обошёл C++. Также за последний год:

  • C обошёл Java и вернул себе первое место (также сохраняя тенденцию);
  • резко поднялся VB.NET;
  • заметно опустились PHP и Lua;
  • Perl, Python и Lisp радуют стабильностью.

Tiobe index - рейтинг популярности ЯП, основанный на анализе поисковых запросов в Интернете.

unsigned
()

Линукс, подписанный ключом microsoft

 ,

Matthew Garrett из RedHat рассуждает об обеспечении UEFI Secure Boot в следующей федоре.

http://mjg59.dreamwidth.org/12368.html

Поскольку домохозяйка с отключением данной опции не справится, разработчики не нашли ничего лучше приобретения ключа майкрософт ($99 на счёт Verisign). Им будут подписаны загрузчик, ядро и модули ядра. Что делать со сторонними модулями ядра - пока не придумали.

Решение не окончательное, разработчикам оно не нравится, но других вариантов они пока не видят.

unsigned
()

Как жить без designated initializers?

 

Если инициализировать поля в порядке объявления, то будет нечитаемо, легко ошибиться и нельзя пропускать поля.

Если с помощью конструктора, то ему все равно надо передавать параметры, а они безымянные. К тому же это динамика.

Может есть еще способы?

designated initializers (не знаю, как по-русски) - это

struct A {
  int a, b, c;
} a = { .a = 1, .c = 2 }; /* a.b == 0 */

unsigned
()

Debian: clang способен заменить gcc

 , ,

Группа Open Source

Sylvestre Ledru провел эксперимент по сборке репозитория Debian с помощью компилятора clang. Вопреки ожиданиям, результаты оказались обнадеживающими:

На мой взгляд, clang уже стабилен и достаточно хорош для пересборки большинства пакетов Debian, хотя многие из них потребуют незначительных исправлений.

В ближайшие несколько лет, учитывая лучшие инструмены статического анализа кода, clang может заменить gcc/g++ как компилятор C/C++ по умолчанию в дистрибутивах Linux и BSD.

Разработчики clang продвигаются очень быстро: с версией 2.9 не собиралось 14.5% пакетов, а с 3.0 - 8.8%. Сделаны существенные шаги: chromium/chrome собираются по умолчанию с помощью clang, Xcode по умолчанию предоставляет clang, FreeBSD работает над переходом с gcc на clang и т. д.

Однако для Debian важно, чтобы clang справлялся со всеми поддерживаемыми архитектурами (11 официальных, 6 неофициальных).

Собрать не удалось 1381 пакет из 15658. Самая частая причина неудачи - более строгое следование стандартам со стороны clang.

Найденные баги будут отправлены в багтрекер Debian вместе с патчами. Автор исследования продолжит тестировать новые версии clang.

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

unsigned
()

RSS подписка на новые темы