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 и других библиотеках.

>>> Подробности

 ,

unsigned
()

Планы на C++17

Форум — Development

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
()

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

Форум — General

Имеется самосборный 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

Форум — Talks

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

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

 

unsigned
()

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

Форум — Development

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

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

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

 

unsigned
()

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

Форум — Talks

Немного дилетантское, зато беспристрастное и прагматичное сравнение нескольких ЯП. Автор 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, исправления и дополнения приветствуются. В скором времени ожидается печатная версия.

>>> Подробности

 , ,

unsigned
()

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

Новости — Open Source
Группа 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.

Презентация

>>> Подробности

 , ,

unsigned
()

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

Форум — Talks

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

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

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

 

unsigned
()

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

Форум — Development

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

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

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

unsigned
()

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

Форум — Development

Как лучше сделать сабж? Нужен обычный поток (или что-то на него похожее), который либо превратится в 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
()

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

Форум — Talks

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

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

unsigned
()

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

Форум — Development

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

void sig(int)
{
    quit = 1;
}

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

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

 

unsigned
()

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

Форум — Talks

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

http://www.openvim.com/

 ,

unsigned
()

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

Новости — Open Source
Группа Open Source

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

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

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

>>> Подробности

 , ,

unsigned
()

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

Форум — Development

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

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

 

unsigned
()

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

Форум — Talks

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

Форум — Talks

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

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

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

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

 ,

unsigned
()

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

Форум — Development

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

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

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

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

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

 

unsigned
()

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

Новости — Open Source
Группа 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.

>>> Подробности

 , ,

unsigned
()

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