LINUX.ORG.RU

Сообщения unsigned

 

[bug] white2 в опере расползся

Форум — Linux-org-ru

От шапки до первого поста больше 50 пустых экранов, внизу еще столько же.

http://ompldr.org/vY296ZQ

Opera 9.50. В firefox и других темах все нормально. Появилось вчера/сегодня.

 

unsigned
()

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

Новости — Документация
Группа Документация

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

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

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

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

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

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

 , ,

unsigned
()

[MIT][Учеба] Еще немного глобализации

Форум — Talks

http://web.mit.edu/newsoffice/2011/mitx-education-initiative-1219.html

MIT, похоже, пошел по пути Стэнфорда и весной 2012 собирается начать онлайн-обучение по ряду курсов (пока неизвестно, каких). Ожидаются онлайн-лабы и сертификаты для самых башковитых. Обучение бесплатно.

 ,

unsigned
()

[C] Изменение кода в рантайме

Форум — Development

Допустим, при старте программы определяется, какая из множества возможных функций будет вызываться. Допустим, вызов происходит на критическом по производительности участке - тогда расходы на вызов по указателю нежелательны. Рождается трюк, идея:

#include <string.h>
#include <stdio.h>

typedef int (*Func)(void);

#ifdef PATCH
char buf[1024];
#define func   ((Func)buf)
#else
Func func;
#endif

int f1(void) { return 1; }
int f2(void) { return 2; }
int f_(void) { return 0; }

int main(void)
{
	int i, sum = 0;
#ifdef PATCH
	memcpy(buf, f2, (char *)f_ - (char *)f2);
#else
	func = f2;
#endif
	for(i = 0; i != 0xFFFFFFF; ++i)
		sum += func();
	printf("sum = %d\n", sum);
	return 0;
}
Действительно, разница значительна:
$ cc -O2 main.c && time ./a.out
sum = 536870910
 
real    0m1.353s
user    0m1.350s
sys     0m0.010s
$ cc -O2 -DPATCH main.c && time ./a.out
sum = 536870910
 
real    0m0.968s
user    0m0.960s
sys     0m0.000s
Сам вижу проблемы:

1. размер функции не определить в общем случае надежно;

2. buf может оказаться неисполняемым.

Можно как-нибудь обойти эти проблемы? Еще лучше, есть стандартные решения для подобных хаков?

 

unsigned
()

[C] Строгий алиасинг для структур

Форум — Development

Проясните, пожалуйста, пункт стандарта 6.5/7:

An object shall have its stored value accessed only by an lvalue expression that has one of the following types:
...
— an aggregate or union type that includes one of the aforementioned types among its members (including, recursively, a member of a subaggregate or contained union)

1.

struct A;
struct B;

void f(struct A *a, struct B *b)
{
  assert(a == b);
}
Компилятор может посчитать, что a != b? В данном случае неизвестно, входит ли одна структура в другую.

Не для этого ли случая нужен атрибут may_alias?

2.

struct A { int a; }
struct B { int b; struct A a; }

void f(struct A *a, struct B *b);
Очевидно, что в этом случае a != b, но по стандарту получается, что это допустимо (и для указания обратного нужно добавить restrict). Я верно понимаю? Это ведь нелогично - для алиасинга нужно, чтобы одна структура была первым членом другой.

 

unsigned
()

[linux] Подлый хорек и саблезубая белка

Форум — Talks
  • Feisty Dunnart (сварливая сумчатая мышь);
  • Woozy Numbat (одурманенный муравьед);
  • Stable Penguin;
  • Jeff Thinks I Should Change This, But To What?
  • Holy Dancing Manatees, Batman!
  • Arr Matey! A Hairy Bilge Rat! (Карамба! Волосатая корабельная крыса!)
  • Funky Weasel is Jiggy wit it (вонючий горностай...)
  • Killer Bat of Doom
  • Man-Eating Seals of Antiquity (тюлени-людоеды древности)
  • Sheep on Meth (овца на амфетаминах?)

и прочее в том же духе.

Думаете, это предложения по наименованию ubuntu 12.04? Нет, это официальные названия релизов ядра. Пруф для примера

Кто-то еще думает, что canonical не вносит никакого вклада в ядро?*

* на самом деле, промасленный горностай появился еще в 1995.

 

unsigned
()

Разработчики Fedora обсуждают объединение каталогов для исполняемых файлов

Новости — Red Hat
Группа Red Hat

Разработчики Fedora обсуждают возможное объединение каталогов /bin, /sbin/, /usr/bin и /usr/sbin: предлагается все исполняемые файлы помещать в каталог /usr/bin, а другие каталоги сделать символическими ссылками на него для совместимости.

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

Таким образом, подобное изменение многое упрощает для разработчика, мейнтейнера и администратора. Если оно будет принято, то может быть реализовано уже в Fedora 17.

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

 

unsigned
()

Как заблокироваться на чтении канала?

Форум — Development

syslog пишет сообщения в пайп, мой демон их оттуда читает обычными fgets и т. п. Все хорошо, пока не остановится syslog - тогда в пайпе появляется бесконечный EOF, и демон занимает весь CPU.

Можно ли уснуть так, чтобы проснуться только при поступлении реальных данных (при перезапуске syslog)?

unsigned
()

Проект GNU PDF: миссия завершена

Новости — GNU's Not Unix
Группа GNU's Not Unix

FSF сообщает об очередном проекте, который удаляется из списка высокоприоритетных свободных проектов: GNU PDF.

Целю проекта GNU PDF, начиная с его появления в 2007 году, была полноценная реализация грядущего стандарта ISO 32000-1. У нас давно уже есть свободные просмотрщики PDF, но большинство из них не поддерживали новейшие возможности PDF, такие как аннотации и формы.
Мы рады сообщить, что libpoppler, наиболее распространённая библиотека PDF для GNU/Linux, дозрела до поддержки этих и других возможностей PDF. Это означает, что любой пользователь свободного ПО сможет использовать программы с функциями, которые до последнего времени были доступны лишь в проприетарных программах.
FSF поддерживает список высокоприоритетных свободных программных проектов, которые жизненно важны для полностью свободной операционной системы. Предыдущие проекты, исключённые из списка, включают свободную программу для поддержки формата RARv3 (The Unarchiver) и CRM для некоммерческих огранизаций (CiviCRM).

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

 ,

unsigned
()

Как выбрать endianness?

Форум — Development

Нужно сохранить в файл много целых чисел, кроссплатформенно.

За Big endian то, что это сетевой порядок байт, вроде как он считается платформонезависимым.

За Little endian то, что он чаще встречается, и накладных расходов на перекодирование не будет (скорость важна).

Что правильнее?

unsigned
()

[Fedora] Как собрать кросскомпилятор?

Форум — Development

Смотрю на gcc.spec из Fedora 15 - похоже, что кросскомпилятор из него собрать нельзя. Это особенно удивляет, потому что для binutils такая возможность есть - target задается макросом. А для gcc - нет.

Так как это предполагается делать средствами RPM?

 

unsigned
()

[bash] Как tee встроить в скрипт?

Форум — Development

Запускаю свой скрипт так:

./install.sh 2>&1 | tee ~/install.log
Нужно то же самое, но прозрачно для пользователя, чтобы скрипт запускался просто как ./install.sh

 

unsigned
()

[gentoo] Не заводится nouveau

Форум — General

Не могу поднять иксы. Карточка GeForce 8400GS, Gentoo amd64, linux-2.6.37-gentoo-r4, VIDEO_CARDS=«nouveau», xf86-video-nouveau-0.0.16_pre20101130. На X -configure получаю

[   709.548] (EE) [drm] No DRICreatePCIBusID symbol
[   709.548] Number of created screens does not match number of detected devices.
  Configuration failed.
С простейшим xorg.conf(загружаю glx и dri, Device=«nouveau», Mode 0666):
[   912.878] drmOpenDevice: node name is /dev/dri/card0
[   912.883] drmOpenByBusid: Searching for BusID pci:0000:01:00.0
[   912.883] drmOpenDevice: node name is /dev/dri/card0
[   912.886] drmOpenByBusid: drmOpenMinor returns -1
[   912.886] drmOpenDevice: node name is /dev/dri/card1
[   912.890] drmOpenByBusid: drmOpenMinor returns -1
...
[   912.995] drmOpenDevice: node name is /dev/dri/card14
[   912.999] drmOpenDevice: node name is /dev/dri/card15
[   913.002] (EE) [drm] failed to open device
[   913.002] (EE) No devices detected.
# lsmod
Module                  Size  Used by
nouveau               538876  0 
ttm                    49932  1 nouveau
drm_kms_helper         26185  1 nouveau
drm                   172525  3 nouveau,ttm,drm_kms_helper
agpgart                27913  2 ttm,drm
i2c_algo_bit            4823  1 nouveau
nvidiafb               36825  0
vgastate                8818  1 nvidiafb
Ставил по Gentoo Wiki, что не так?

 

unsigned
()

Вышел PCC 1.0

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

Проект Portable C Compiler ставит своей целью создание альтернативы компилятору GCC для языка C под лицензией BSD. Проект берёт начало от оригинального компилятора C, использовавшегося в UNIX в семидесятые - восьмидесятые годы прошлого века. Компилятор отличают:

  • полная поддержка стандарта C99;
  • малый размер (640 КБ в архиве) и простой код;
  • быстрая компиляция.

Заявлена работа в ОС Linux, *BSD, Windows, Mac OS X, Solaris. Поддерживаются платформы i386 и amd64, другие платформы — ограниченно.

Генерируемый код, в большинстве случаев, сравним по эффективности с кодом, производимым GCC. На данный момент компилятор собирает FreeBSD, NetBSD и ядро OpenBSD.

Некоммерческая огранизация BSD Fund, спонсор проекта, объявляет конкурс по успешной сборке ядра Linux при помощи PCC. Также в их планах фронтенды для языков Fortran (почти готов) и C++.

Архитектура PCC (на английском)

Объявление о релизе

>>> Домашняя страница

 , , , ,

unsigned
()

8-битный хэш для строки

Форум — Development

Есть строка из 3-8 латинских строчных букв, хочу получить для нее 8-битный хэш для создания таблицы.
Все допустимые строки заранее известны, их примерно 40 (потом может добавиться десяток новых строк, но тогда я могу и функцию сменить).
В идеале, обойтись бы без коллизий.
Как подобрать функцию? Где об этом почитать?

unsigned
()

[C] Неупакованные структуры в ELF

Форум — Development

Смотрю в elf.h - уйма структур, описывающих заголовок и секции. Ни одна из них не упакована, поэтому теоретически там могут быть дыры, но тогда бинарники получались бы у каждого свои, ни с чем не совместимые.
Так что дыр наверняка нет. Чем это гарантируется? Почему не указали явно упаковку?

 

unsigned
()

[C] Бесполезные типы данных?

Форум — Development

Поясните, зачем нужны типы short и long?

Тип int я использую, если мне просто нужна целая переменная, неважно, какой ширины. int - самый эффективный на любой платформе, это удобно. А что известно про long int? Только гарантированная ширина 32 бита. Но если мне нужно 32 бита, я возьму int32_t, это логично, и я не получу сюрпризов на 64-битной машине То же самое относится и к short int, и к long double.

В общем, не вижу смысла в типах, для которых не описано однозначно множество допустимых значений (int - исключение, как уже сказал).

Есть ситуации, когда они всё-таки полезны?

 

unsigned
()

[C] h-файл для расширений компиляторов

Форум — Development

Есть ли готовый заголовочный файл, оборачивающий макросами расширения C основных компиляторов? Наподобие

#if __GNUC__ + 0 >= 2 && __GNUC_MINOR__ + 0 >= 96
#define likely(x)    __builtin_expect(!!(x), 1)
#define malloc_like  __attribute__((malloc))
#else
#define likely(x)    (x)
#define malloc_like
#endif
И так для разных расширений и компиляторов. И чтобы файл можно было поправить и к себе в проект утащить.

В sys/cdefs.h есть подобное, но мало, и только gcc, и GPL.

 

unsigned
()

[C] Функцию превратить в макрос

Форум — Development

Синтаксическая задача. Есть функция, упрощенно:

static inline void *mm_get_chunk(void **pool)
{
  void *head = *pool;
  *pool = next(*pool);
  return head;
}
Ее нужно превратить в макрос, сохранив способ использования. Возможно ли?

Проблема в том, что нужно правостороннее выражение, но нужна и временная переменная.

 

unsigned
()

[C] строки dlerror/strerror

Форум — Development
const char *s = dlerror();
big_function();
puts(s);

Есть ли гарантия, что по адресу, который я запомнил, всегда будет одна и та же строка? Т. е. нет ли там внутри какого-нибудь буфера (я про гарантии стандартов).

Ну и тот же вопрос относительно strerror(errno).

 

unsigned
()

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