LINUX.ORG.RU

Вышел GNU Mach 1.4

 , ,


1

3

После 11 лет интенсивного кодирования и в связи с 30-летием GNU была выпущена новая 1.4 версия микроядра GNU Mach. Подробный список изменений неизвестен. Всё-таки 11 лет прошло. Текст официального анонса:

2013-09-27
Version 1.4

Really too many to list them individually.  Highlight include numerous bug and
stability fixes, a Xen port for 32-bit x86 including basic support for Physical
Address Extension (PAE), an initial AHCI driver (SATA hard disks), a new SLAB
memory allocator to replace the previous zone allocator, support for memory
object proxies, access restrictions for x86 I/O ports, support for some PCMCIA
devices based on the pcmcia-cs package.

Мой вольный перевод:
В самом деле слишком много изменений, чтобы перечислять их отдельно.
Основные изменения включают многочисленные исправления ошибок и улучшения
стабильности, порт Xen'а для 32-битных x86 (включая базовую поддержку
PAE), начальная версия драйвера AHCI (для дисков SATA), новый SLAB аллокатор
памяти (заменяющий прежний аллокатор зон), поддержка проксирования объектов в
памяти, ограничение доступа к портам ввода-вывода процессоров x86, поддержка
некоторых PCMCIA устройств (основано на пакете pcmcia-cs).

История создания GNU Mach:

  • Версия 1.0 была выпущена 14 апреля 1997.
  • Версия 1.1.1 была выпущена 12 мая 1997.
  • Версия 1.1.2 была выпущена 10 июня 1997.
  • Версия 1.1.3 была выпущена 12 июня 1997.
  • Версия 1.2 была выпущена on 21 июня 1999.
  • Версия 1.3 была выпущена 27 мая 2002.
  • Версия 1.4 была выпущена 27 сентября 2013.

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

★★★★★

Проверено: Shaman007 ()
Последнее исправление: unfo (всего исправлений: 7)

Ответ на: комментарий от wota

я имел ввиду вот этот гипотетический вариант:

#define XXX__INVOKE_CB__XXX(function_p, args...)		\
	{					\
		if (function_p) {		\
			res = function_p(args); \
			if (res)		\
				return res;	\
		}				\
	}
user_id_68054 ★★★★★
()
Ответ на: комментарий от gena2x

ну вот теперь мы (внучную) попробуем подставить макрос...

но предположим что там нет «do»,«while»:

первый случай:

if (...)
  macro;
else
  ...

становится:

if (...)
  {					
		if (function_p) {		
			res = function_p(args); 
			if (res)		
				return res;	
		}				
	}
else
  ...

второй случай:

if (...) {
  macro;
} else
  ...

становится:

if (...) {
  {					
		if (function_p) {		
			res = function_p(args); 
			if (res)		
				return res;	
		}				
	}
} else
  ...

то есть во втором случае — у нас два раза открываются фигурные скобки (блок) «{{» и два раза закрываются «}}»

--- это является в Си синтактисечкой ошибкой?

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 2)
Ответ на: комментарий от AptGet

Нет, это не дело привычки. Компилятор глотает такие заголовки с несоотвествующими объявлениями (конкретный пример привести сейчас не могу.)

~> gcc test6.c -o test6 -Wall -Wextra -Werror
~> ./test6
440
~> cat test6.c
#include <stdio.h>

int f(int a, int b);

int f(a, b)
char a;
char b;
{
	return a + b;
}

int main() {

	printf("%d\n", f(1000, 2000));

	return 0;
}

вот, кстати, пруф. -Wall -Wextra -Werror - ничего!

AptGet ★★★
()

Когда уже можно с Linux то пересаживаться? Больше 10GB диски уже поддерживает, осталось совсем немного, правда ведь?

VladTheImpaler
()
Ответ на: комментарий от bbk123

А что, GNU/Hurd есть только от Debian?

Был ещё от арча. В каком состоянии сейчас - не знаю.

hobbit ★★★★★
()
Ответ на: комментарий от V_P

вышло ндцать версий Убунты.

Убунта вообще появилась на свет позже Mach 1.3.

shuck ★★★
()
Ответ на: комментарий от tailgunner

понял. всё дело в точке с запятой:

вот тут —

if (...)
  macro;
else
  ...

да.. ну и хрень же этот ваш Си :)

следующий код являетс НЕ валидным:

if (...)
  {...}; // error: точка с запятой!!
else
  ...
а следующий является ВАлидным:
if (...)
  do{...}while(0); // noerror: точка с запятой -- не помеха!
else
  ...

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 3)
Ответ на: комментарий от echo123

Там речь шла о самой новости, где я исправил. Но на такие замечания, касающиеся общения на форуме, мне совершенно насрать, ибо делют их лишь те, кому больше сказать нечего. В частности тебе.

bbk123 ★★★★★
() автор топика
Ответ на: комментарий от bbk123

«Делют» их те, кого выворачивает от твоей безграмотности и неуважения к собеседникам. Я за бан.

anonymous
()
Ответ на: комментарий от user_id_68054

Тут как раз все просто, это делается на случай употребления данной конструкции в else. Сопоставьте необходимость в употреблении ";" в следующем примере, это должно навести вас на мысль :)

#define X(v)	do { v += v + 1; } while (0)
#define Y(v)	{ v += v + 1; }

int
main(int argc, char** argv)
{
    int x;

    if (argc == 1)
	x = 3;
    else
	x = 1;

    if (argc == 2)
	X(argc);
    else
	Y(argc);

    if (argc == 3)
	Y(argc)
    else
	X(argc);

    return 0;
}

A-234 ★★★★★
()
Последнее исправление: A-234 (всего исправлений: 1)
Ответ на: комментарий от A-234

да, спасибо.. думаю что я понял :)...

но правда если признаться по чесноку — то на самом деле понял не доконца... :) в частности я так и не понял зачем кто-то станет использовать конструкцию «if-else» без блоков «{...}».

мне всегда казалось — что по правилам хорошего воспитания — если пишешь «if» (или «for», или «while», или ещё что-то похожее) — то сразу ставь «{...» не зависимо от того сколько там операций одна или много (и даже не зависимо от того — есть ли там «else» или же просто обычный «if» без «else»)...

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 5)
Ответ на: комментарий от user_id_68054

мне всегда казалось — что по правилам хорошего воспитания — если пишешь «if» (или «for», или «while», или ещё что-то похожее) — то сразу ставь «{...»

Это не правила хорошего воспитания.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

вобще-то здесь не Твиттер.

в том смысле — что тут можно и побольше буковок было бы написать... :)

ну или — если думаешь иначе — то поставь хоть тогда какой-нибудь #хештэг :)

Это не правила хорошего воспитания.

как можно понимать эту фразу? плохое воспитание? вообще к воспитанию не имеет отношения? другой вариант?

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 1)
Ответ на: комментарий от user_id_68054

Ставить { везде - это не правило хорошего тона, а ынтерпрайз головного мозга; авторы макросов не должны писать макросы, пригодные к использованию только с определенными стилями кодирования.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

авторы макросов не должны писать макросы, пригодные к использованию только с определенными стилями кодирования

почему? за каким чёртом макросу нужна универсальность?

это же всего лишь какой-то хренов макрос? (по сути — костыль.. зачем костылю универсальность?).

на мой скромный взгляд — лучше бы подумать о том чтобы код был бы по-понятнее...

ну в принципе — суть я понял.

спасибо :)

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 1)
Ответ на: комментарий от user_id_68054

авторы макросов не должны писать макросы, пригодные к использованию только с определенными стилями кодирования

почему?

«А об этом спроси своего ангела» (ц)

tailgunner ★★★★★
()

Очень здорово, но оно не поддерживает amd64

cvs-255 ★★★★★
()
Ответ на: комментарий от user_id_68054

почему? за каким чёртом макросу нужна универсальность?

Загляни на досуге в sys/queue.h и где он везде используется. Тебя ждёт много интересных открытий. =)

beastie ★★★★★
()
Ответ на: комментарий от user_id_68054

Тебя в школе не учили начинать предложения с заглавной буквы? Ещё про твиттер тут рассуждает...

anonymous
()
Ответ на: комментарий от bbk123

Гуро-пингвин ставит диагнозы по постам на ЛОРе? Боюсь совет обратиться к психиатру не по адресу...

anonymous
()
Ответ на: комментарий от anonymous

Диагноз тебе психатр поставит. А я лишь послал :-)

bbk123 ★★★★★
() автор топика
Ответ на: комментарий от bbk123

Оффтоп, конечно, но...

Зато git жутко распиарен.

Дело не только в том, что распиарен. Просто недостатки надуманы по большей части. Я например сначала сидел на меркуриале, а гита опасался, т.к. таких вот дядей-неосиляторов начитался. Мол небезопасные ревизии, нет перманентных веток, сложный синтаксис команд...

А потом перешёл на гит! Т.к. почти каждый «недостаток» оборачивается преимуществом: отсутствие перманентных веток - очень удобно, ибо их можно тянуть не все и называть как хочешь, а после изменения истории не надо бегать по всей Москве чтобы сделать всем strip; наличие индекса бывает удобно, а в остальное время его можно не замечать (алиас ci = commit -a и живи спокойно); формат хранилища гита очень простой (файлы!) и эффективный (паки) (вместо например ДЕБИЛЬНЕЙШЕГО формата хранилища у меркуриала - по файлу на каждый версионированный файл, и ловите тормоза если у вас там их 600000); есть всякие классные фичи типа stash, rebase -i, удобства в консоли; к нетривиальному синтаксису например reset'а можно просто привыкнуть... Претензии к манам я кстати вообще не понял в чём у этого чувака - всё там подробно расписано.

Но самое главное - если после всего этого ещё остаются какие-то минусы, они все нафиг заруливаются одним жирным плюсом - СКОРОСТЬЮ.

И кстати по факту в итоге в Меркуриал утащили у bookmark'и, и stash, и rebase -i... И попытку переименования перманентных веток... Но оно там всё по сути в позиции догоняющего.

vitalif ★★★★★
()
Последнее исправление: vitalif (всего исправлений: 3)
Ответ на: комментарий от bbk123

эти изменения вообще не должны коммититься

.gitignore (.git/info/exclude) не осилил?

anonymous
()
Ответ на: комментарий от Bioreactor

XNU работает и развивается.

А как там OpenDarwin?

devl547 ★★★★★
()

Я раньше тоже следил за mach+hurd - не дождался =(( Теперь интересен проект ребят из СПбГУ «Embox» . Хотя оба проекта пока в научно-исследовательской стадии =))

gBopHuk
()
Ответ на: комментарий от Bioreactor

XNU работает и развивается.

А оно микро, в том же понимании и в той же степени, как и mach?
ЕМНИП, kext-ы грузятся в ядро.

ls-h ★★★★★
()
Ответ на: комментарий от ls-h

А оно микро, в том же понимании и в той же степени, как и mach?

Нет. То есть там есть mach IPC, но kext'ы, IOKit и BSD часть в одном адресном пространстве с mach, да.

AptGet ★★★
()
Ответ на: комментарий от AptGet

Нет. То есть там есть mach IPC, но kext'ы, IOKit и BSD часть в одном адресном пространстве с mach, да.

А чего тогда о нем вспомнили? Интересно, Apple (NeXT) его утащила один раз, допилила под себя и развивает XNU самостоятельно или и сейчас происходит какой-то круговорот кода mach <-> XNU?

ls-h ★★★★★
()
Ответ на: комментарий от ls-h

Интересно, Apple (NeXT) его утащила один раз, допилила под себя и развивает XNU самостоятельно или и сейчас происходит какой-то круговорот кода mach <-> XNU?

XNU = mach + IOKit + куски BSD. Оригинальный CMU Mach давно не развивается, поэтому у apple собственная версия. Общий код с CMU Mach и соответственно с GNU Mach конечно есть, но не думаю что GNU mach заимствует у apple, а наоборот тянуть код смысла нет, эппловский mach существенно допилен по сравнению с оригиналом.

AptGet ★★★
()
Ответ на: комментарий от vitalif

А потом перешёл на гит! Т.к. почти каждый «недостаток» оборачивается преимуществом: отсутствие перманентных веток - очень удобно, ибо их можно тянуть не все и называть как хочешь, а после изменения истории не надо бегать по всей Москве чтобы сделать всем strip;

есть всякие классные фичи типа stash, rebase -i

Ы. Впервые встречаю неосилятора Mercurial O_o

формат хранилища гита очень простой (файлы!) и эффективный (паки) (вместо например ДЕБИЛЬНЕЙШЕГО формата хранилища у меркуриала - по файлу на каждый версионированный файл, и ловите тормоза если у вас там их 600000);

Ахаха. Это опять же говорит о том, что ты не всё знаешь о git %)

И кстати по факту в итоге в Меркуриал утащили у bookmark'и

Народ требовал «мы хотим как в git!!11». ИМХО, совершенно бесполезная фишка.

и stash

В Mercurial с самого начала (2005) был mq, так что stash, если его и перетащили, тупо не нужен.

и rebase -i

В mq это опять же было с самого начала, просто называлось по-другому.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

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

А что я такого в гите не знаю о хранилище? И как это в конечном итоге отменяет то, что у меркуриала оно идиотское и тормозное? :) кстати, по моим замерам hg'шное хранилище ещё и жрёт раза в 2 больше места, чем гитовое, на тех же данных. Посередине между ними находится bzr, но он вообще безумный, я вообще не понимаю зачем его юзать :)

mq-то понятно что был, но это только говорит о том, что всё то же самое было МОЖНО сделать. Но не говорит о том, что это было удобно.

vitalif ★★★★★
()

Это не тот ли Mach, который Apple всё грозится выпилить из ядра Mac OS X, но до сих пор не выпилила?

kkk ★★
()

В самом деле слишком много изменений, чтобы перечислять их отдельно.

Эвфемизм к «Тут надо было все переписать...»

slackwarrior ★★★★★
()
Ответ на: комментарий от kkk

грозится выпилить из ядра

ссылка?

Это не тот ли Mach, который Apple всё грозится выпилить из ядра Mac OS X, но до сих пор не выпилила?

нет, но у них общий предок

AptGet ★★★
()
Ответ на: комментарий от sT331h0rs3

По строчке в день хотя бы.

Это слишком много. Там нет столько изменений.

anonymous
()
Ответ на: комментарий от vitalif

А что я такого в гите не знаю о хранилище?

Истории.

И как это в конечном итоге отменяет то, что у меркуриала оно идиотское и тормозное? :)

Тоньше надо.

mq-то понятно что был, но это только говорит о том, что всё то же самое было МОЖНО сделать. Но не говорит о том, что это было удобно.

Что «всё» - rebase и stash? Это просто побочные эффекты существования mq. Он сделан для повседневной работы. Те, кто его не осилил, и git будут использовать на уровне распределенной SVN.

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.