Pull to refresh

Comments 81

А ещё есть кросс-компиляторы gcc и watcom, и несколько разных libc.
О которых никто так никогда и не узнает, потому что комментатор выше о них не напишет :-)
Лично мне — нет. Но на Хабре — возможно, да. Я добавил опрос в конце этого поста.
Это была бы крайне полезная информация.
Для использования которых нужны очень развитые навыки танцев и работы с бубном.
Едва ли более развитые, чем для полноценного использования tcc в Колибри.
Как показала практика, никто так и не смог настроить автосборку чего бы то ни было с libc. Только compiles on my machine, только ручная работа с бубном.
Это меня немного удивляет. В linux вообще никаких проблем с компиляцией кода с libc не возникает.
Ну да, совсем никаких проблем, и на форуме нет десятков жалоб на проблемы с компиляцией.
Факт остаётся фактом: за три года существования автосборки список программ на fasm с компиляцией изменяется постоянно всеми, кому не лень, а все — абсолютно все — программы, использующие libc, включаются строго уже скомпилированными бинарниками или не включаются совсем. Может быть, всё-таки проблемы в консерватории?
Пожалуй, мне действительно нужно написать какой-то образовательный материал, который поможет разобраться с этими жалобами. Спасибо за то, что указала первой же ссылкой моё сообщение — это действительно сильный аргумент. Два года бессонных ночей пронеслись перед моими глазами вновь, и я вдруг осознал, насколько сложно было скомпилировать для Колибри в первый раз даже такую простую вещь, как freetype.
Будет ли возможность разрабатывать код кроссплатформенно под Windows / Linux + KolibriOS?

С оконными интерфейсами и т.д.
Оконные приложения для KolibriOS можно уже сейчас разрабатывать под Windows/Linux
Теоретически — да, есть, например, порт SDL и какое-то количество портированных программ, которые не умеет собирать никто, кроме тех, кто портировал.
Практически — для настройки понадобятся очень крепкие нервы — скажем, мои не выдерживают — и контакт с кем-нибудь из наших ЯВУшников. Можете быть уверены, что с первого раза ничего собрать не получится. ЯВУшники проекта подскажут, что именно вы сделали не так, но делать так, чтобы у всех всё просто собиралось, и не подумают.
case 2:return 0;

                case 3:

за такое руки отрывать надо — зачем плохой пример людям показывать?
Вот потом открываешь такой код и долго думаешь что за это за 2, что за 3 такие?
Не стреляйте в пианиста — он играет, как умеет.
Автору поста только 15 лет. Старается, как может. Если ему сейчас оторвать руки, то лучше он точно уже не станет.

По теме вопроса: надеюсь, что кто-то из наших СИ-шников даст более подробное объяснение.
То, что отрывать руки не гуманно, не означает, что по этим самым рукам нельзя бить. =)

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

UPD: прочитал ответ Punk_Joker, впал в уныние. Руки отрывать кому-нибудь всё-таки надо.
можно уточнить причину, скрытую в моем сообщении?
Речь про сообщение
>>> об этом как-то не задумывались, так как коды событий описаны в документации API ядра
, в котором причин целая масса.

Всё-таки, не здорово лезть в документацию, чтобы вспомнить, что же делает код 2. Какой-нибудь KSYS_EVENT_EXIT смотрелся бы куда лучше. Причём оно полезно не только для посторонних людей, которые вне контекста. Даже если вы знаете, что такое 2 и 3, то различить их визуально при проматывании switch-блока сложнее, чем KSYS_EVENT_EXIT и KSYS_EVENT_BUTTON_PRESS.

Ну и самое главное, kolibrisys.h — это тоже часть документации, а не условный костыль языка С, чтобы всё компилировалось. А сейчас там набор функций без каких-либо указаний возможных возвращаемых значений и их смысла для не-void. Перечисляя все эти 2 и 3 в виде #define в хэдере вы убиваете двух зайцев.
Предложите парню выложить код на github. Получит опыт принятия PR
Код и так на нашем SVN в свободном доступе: websvn.kolibrios.org/listing.php?repname=Kolibri+OS
GitHub не пользуемся принципиально: во-первых, это не позволит нам делать авто-сборку проекта на своём сервере, а во-вторых, иногда они решают за тебя, что твой код нужно удалить без предупреждения.
Почему не позволит?
Совсем недавно стали доступны веб-хуки, без приложения. Просто указываете адрес и по событию (push/pull-request/issue, etc.) на адрес постится json.
Да, неприятная ситуация.
Давно с восхищением читаю ваши посты, половины не понимая — но вот простой вопрос. А почему впринципе не хотите перейти на git, пусть и без github?
Ну зачем городить огороды и изобретать велосипеды? Есть SVN, доступ на чтение из него есть у всех. Доступ на запись можно попросить, и любой желающий (убедивший нас, что не будет заниматься вредительством) её получит. На том же сервере, где установлен SVN, есть shell-скрипт автосборки, который запускается пост-коммитным хуком, и имеет прямой доступ ко всем исходникам. Потом на том же сервере выкладываются автоматически результаты сборки в виде готовых образов дискеты и CD-ROM (IMG, ISO). Зачем использовать сторонние сервисы, заморачиваться с передачей данных между разными серверами, зависеть от чьей-то доброй воли, когда всё и так бесплатно есть у нас самих?
А почему просто не перейти с svn на git без гитхаба? Git всё-таки гораздо удобнее.
Тем более есть gitlab для удобной работы.
Я в таких тонкостях не силён, простите. Исторически там стоял SVN (ещё с 6 октября 2005 года). Я даже не знаю, существовал ли git в то время, и был ли он пригоден для повседневного использования. Разработчиков Колибри SVN всем устраивает — зачем менять то, что хорошо работает? Только потому, что менять — это модно?
Поверьте, с git всё становится гораздо удобнее. Перечислять плюсы не буду, всё уже много раз перечислено до меня, например habrahabr.ru/post/68341/.
Спасибо за линк — прочитал ту статью. Но я искренне не могу понять, в чём лично для нас будет преимущество? Причём, один недостаток очевиден сразу — всем разработчикам придётся переучиваться с SVN на GIT.
Возможно, кому-то — переучиваться, но учитывая что в коммьюнити много молодых разработчиков, знакомство с Git им не повредит (им ещё в вуз/на работу устраиваться).

Ну или другой вариант: сейчас пока ваш SVN-сервер где-то далеко, контрибьютить я туда скорее всего не буду без острой на то нужды (ещё зависит от сложности отправки/скорости рассмотрения патчей и т. п.). Гитхаб же — социальная сеть, там отправить патч — дело минуты, не нужно нигде регистрироваться и вести нудную переписку на форуме/по e-mail. Количество патчей точно не уменьшится, а коммьюнити гитхаба — это сильное подспорье. Перевод svn на гихтаб дело пары команд. А попробовав силу слияния веток гита уже невозможно отказаться:)
Давайте, вы честно признаете — контрибьютить в наш проект вы никогда не будете, и дело совсем не в инструментах.
Одна только возможно оставить комметарий к любой строке кода через браузер (на github) — это уже хороший повод перейти на github.
Может для вас повод, но для нас совсем не показатель.
Посмотрите мой профиль — я с 1993 года живу в Израиле, и с 2004 года работаю там в хай-теке. Все фирмы, где я работал, включая мою теперешнюю работу (где в разных странах занято около 800 сотрудников, из них 550-600 в Израиле), почему-то используют только SVN. Все фирмы прибыльные, значит, там сидят далеко не идиоты. Так что Вы не сможете меня убедить, что SVN — отстой, а GIT — наше всё.

Получить доступ на запись в наш SVN Вы можете, просто зарегистрировавшись на нашем форуме и попросив этот доступ. Причём коммитить Вы сможете сразу в «транк» (будет совсем шлак — Ваш коммит просто откатят). Если Вам даже это лень сделать, то переход на Git проблемы не решит.

Наше сообщество довольно маленькое по меркам других open-source проектов. Для нас единственный способ, чтобы чей-то код кто-то протестировал, — это запихнуть этот код сразу в «транк», без всяких лишних телодвижений. Именно поэтому, централизованный репозиторий SVN — наш единственный способ выжить.
Проблема не в том, что SVN отстой, а GIT крутяк крутяцкий, а в том, что на текущий момент GIT как ни крути популярнее чем SVN. И на волне популярности git и github, вы можете поднять популярность и вашего продукта. О чем собственно и пытался вам донести парень выше.
Например, я лично искренне хотел начать изучать исходники колибри и возможно что-нить для него написать, но сам факт того, что он на SVN отбил у меня такое желание, по той простой причине, что я незнаком с SVN.
Еще насчет git. Я кручусь немного в другом соку, а именно веб-разработка и мне довелось сотрудничать с десятком фирм из этой же области, и ни одна из них не использует SVN.
То есть, из-за того, что Вам лень знакомиться с SVN, существующие разработчики Колибри должны бросить SVN и бежать знакомиться с GIT? Какой-то у Вас неравноценный обмен получается.
Я лично тут совершенно не причем, вы почему-то всё свели лично ко мне. Своё мнение я описал. Вкратце его суть сводится к тому, что на популярности GIT можно поднять популярность проекта, вот и весь смысл этого сообщения. Не зря же самые популярные опенсорс проекты переходят на git.
Я вовсе не имел намерения Вас задеть, но раз уж Вы снова подняли обсуждение 9-месячной давности, не мог не ответить.

А у Вас есть какие-то статистические данные по увеличению популярности? Проект X использовал SVN, потом перешёл на GIT, и количество разработчиков возросло в 2 раза? Или нам нужно потратить время (которого и так не хватает даже на нужные фичи и багфиксы), чтобы перевести проект на GIT, а новых разработчиков нам никто не гарантирует?
Возможно вы правы. Просто я считал, что не так сложно сменить систему управлений версиями. Есть ведь импорт в самом git (команда git svn clone). Но раз вы так говорите, возможно я заблуждаюсь.
Вам, лично вам, никто не мешает клонировать наш svn-репозиторий в локальный git-репозиторий и продолжать работать с git — git svn clone svn://kolibrios.org создаст локальный git-репозиторий, с которым можно работать как обычно, только с git svn rebase вместо git pull для подтягивания новых изменений. Впрочем, весь репозиторий с 5179 ревизий на данный момент вам вряд ли нужен, git svn clone svn://kolibrios.org -r5000 && git svn rebase kolibrios.org несколько экономичнее.
Ухты не знал! Благодарю, попробую.
Как уже писалось человек учится. А эти циферки это системные события. О них в статье действительно ничего не написано, но вскоре все будет исправлено. Спасибо за замечание.
А в ваших заголовках эти события ни как не именуются?
Нет. Раньше об этом как-то не задумывались, так как коды событий описаны в документации API ядра.
Вообще-то нумеруются, в нормальных библиотеках.
При всем моем уважении к подвигу колибриписателей, я не могу не отметить тот факт, что API KolibriOS разработана в наихудших традициях MS-DOS.
Дыж, сколько можно уже писать из раза в раз одно и тоже?! Ну, вы хоть всей толпой приходите что ли? API Достался от MenuetOS «AS IS» и мы не имеем желания и ресурсов переписывать API и четыре сотни программ его использующих, лишь бы удовлетворить ваше изувеченное чувство прекрасного!

Честное слово задалбывает это уже в стопятсотый раз читать. Вы еще стопятьсотпервый раз напишите «Прибитое к одной архитектуре гвоздями — не нужно!» и будет очень оригинальным на фоне всех остальных критикующих! Правда-правда!
Но это же правда! На фоне Колибри никсы выглядят академической ОС за совместным авторством Вирта и Таненбаума, а Windows — гениальной разработкой MITовских студентов образца начала шестидесятых.
О! Мы уже дошли от «мертворожденное, эталонное ненужно, с больными на всю голову криворукими разработчиками» до сравнения с Большими ОС, развивающихся миллионными армиями разработчиков более трех десятков лет, API которых от версии к версии меняется иногда так, что ломается больше половины функционала. Мда, прогресс на лицо!
Ну хватит уже, а то я вообще перенесу статью в черновики, и все ваши комментарии пропадут :-)
Обидно то как, а я уже письмо стер из ящика, думая что здесь прочту. Может еще раз изложите?
Вы не путайте. Я «мертворожденное, эталонное ненужно, с больными на всю голову криворукими разработчиками» не говорил, ибо так не считаю.

А теперь по делу. Почему мне не нравится Колибри?

Потому, что однажды (мне было лет двенадцать) в библиотеке я наткнулся на учебник по Delphi. И зажегся Мечтой. Компьютера дома не было, компьютер был у бабушки летом. У бабушки же недалеко от дома был радиорынок, на котором я купил диск с пятым Delphi (на котором было полно других программ, но об этом после). Книжку я к тому времени сдал в библиотеку и потому два дня ломал голову над загадкой := (предварительно переустановив три раза винду). Потом нарисовал в Delphi простую игру типа «поймай кнопочку» и мне это надоело.

Но на диске оказалась копия TASM и учебник по нему. Я еще месяц поломал голову, пока не понял что такое командная строка. Потом начались простейшие хелловорды типа «переведи число в шестнадцатеричную форму». Потом возникла сумасшедшая идея написать свою ОС.

В книжном шкафу другой бабушки был обнаружен «Inside IBM PC» Нортона. После его чтения в моем мозгу создалась примерная (и, как оказалось, ошибочная) схема работы компьютера. Спасибо Нортону за то, что я знаю что такое оперативная память. Но тогда я возненавидел Нортона за тот вопиющий факт, что он не называл конкретных сигнатур, регистров и номеров прерываний.

Потом возник безлимитный интернет. Про википедию (тем более английскую) я тогда еще ничего не знал. Зато каким-то образом наткнулся на WASM.RU. Там я нашел три вещи. Во-первых — описание сервиса BIOS и формата бутсектора. Во-вторых — FASM. В-третьих — мануал по защищенному режиму. Прочитав последний, я заплакал и пошел на курсы по Паскалю.

Дальше было много чего. Были курсы Паскаля, из коих я вынес только знание принципов CRT. Был репетитор, который наконец-то рассказал мне про алгоритм Евклида, сортировки и рекурсию. Были безвременно оборвавшиеся курсы Си, на которых у меня наконец-то зародилась моя первая и наивная теория указателей. Был переход на Linux. Короче, много чего было.

Потом я случайно наткнулся на заброшенный форум осеписателей и вспомнил про Мечту. Снова начал писать свою ОС на FASM, попутно доставая завсегдатаев форума дурацкими вопросами. Там меня наконец вылечили от досинтелизма. Вылечили с трудом, путем ковровой травли. И правильно сделали, я им за это очень благодарен. В общем, мне понадобилась капитальная ломка мозгов. И я считаю, только потому, что я узнал о x86 вообще и BIOS в частности. Я, например, просто не мог понять что такое плоский режим. Просто из-за того, что привык к кривому миру x86 и идиотскому API BIOSа.

По-моему в ближайшие десять лет у программирующего человечества есть шанс избавится от всего мусора. Лично я, во всяком случае, собираюсь поспешествовать этому избавлению.

Когда и если моему ребенку придет в голову заняться ОС, я не хочу, чтобы знакомые «крутые хакеры» искалечили его неокрепший мозг, рассказав о KolibriOS.

Но еще раз повторяю, я преклоняюсь перед подвигом разработчиков. KolibriOS — это рукотворный памятник человеческим способностям. И место ему в кунсткамере.
Не хочу вас обижать, но у вас очень скудное и однобокое представление о теме в которой вы решили не разбираться. Я не оцениваю вас как человека, возможно в других областях вы гений, но тут какой то детский опыт сыграл с вами злую шутку. Мнение большинства никогда не является априори правильным, лишь потому что они большинство. Миром движут подвижники, которых поначалу всегда презирают (чужие ведь и странные) и боятся (а кто его знает чего он задумал?) и лишь впоследствии когда это становиться востребовано большинством, это «детство» внезапно и прочно забывается и на него налагается табу.
Еще раз.
Я считаю, что применять Колибри в педагогических целях, как пример ОС, — преступление против мозга ученика.
Применять Колибри в продакшн — пожалуйста, дело хозяина. Но насколько я видел, разработчики продвигают ее прежде всего как «школьную», «учебную» ОС.
Вы что-то путаете — Колибри использует 16-бит и API BIOS (real mode) только для загрузки, а после загрузки сразу переходит в 32bit protected mode (защищённый режим), и от BIOS больше не зависит. А такого понятия как «плоский режим», я вообще не знаю — есть real mode, protected mode, long mode (64 bit).
Хотя Колибри и не использует BIOS, принципы работы и API колибри по своей идеологии и организации сильно напоминает BIOS. Те же прерывания, полное отсутствие какой-либо универсальности API, завязка под конкретную платформу, ассемблер во все поля и т. п.

А плоский режим — это не режим работы процессора, а режим использования памяти ОС. Сегменты на все четыре гигабайта и переключение задач через страницы. Он используется во всех современных ОС (в том числе Колибри), но никогда не освещался в старых учебниках. Его я привел просто как пример — правда, совершенно не релевантный.
Т.е. то что человек по своей идеологии и организации сильно напоминает обезьяну вас не смущает? Такими аналогиями можно охватить многие вещи. Вот современный автомобиль по своей идеологии и организации сильно напоминает телегу. А еще лампочка накаливания по своей идеологии и организации сильно напоминает восковую свечку. Ваши претензии все же сильно натянуты и завязаны на полученный вами отрицательный эмоциональный опыт, который вы по какой то причине воспринимаете как благо, поскольку вы постарались и вписались в систему других людей, но это не является доказательством абсолютной истинности. Зачем ограничиваться лишь одной стороной, если мир гораздо сложнее и в нем есть место множеству вариантов.
Ладно. В конечном итоге, зачем я затеял этот очевидно бессмысленный флейм?

Желаю удачи в ваших разработках и хороших выходных!
Спасибо и вам не хворать. :-)
Но насколько я видел, разработчики продвигают ее прежде всего как «школьную», «учебную» ОС.

Это где это вы прочитали? Досужие размышлизмы людей не причастных к разработке, в попытках впихнуть в свое устоявшееся мировоззрение появившуюся новую-старую вещь. А насчет «преступление против мозга ученика» это вы современную школьную программу РФ еще не видели. Вот уже где люди оторвались по полной.
Видел и лично учил. Но, слава богу, нормальные учителя ее игнорируют.
Опять же говорите за себя. Сколько знакомых родителей воют «Какие идиоты это придумали?»
Да, я говорю за себя. Потому, что за всю Одессу говорить глупо.
И опять же, за себя: я хорошей школьной программы не видел никогда (хотя учился в двух совершенно разных странах по четырем совершенно разным программам). Все программы состоят большей частью из административного идиотизма. Результат зависит только от степени адекватности учителя.
Но что-то мы в полный оффтоп заехали.
Компилятор TCC (Tiny C Compiler). Сборку для Колибри (mini_c_dev) можно скачать на нашем форуме. Тема с обсуждением ktcc (Kolibri TCC) находится здесь: board.kolibrios.org/viewtopic.php?f=45&t=565

Раз так, то вопрос снимается. Я надеялся, что будут виртуозные танцы с бубном по поводу Application Binary Interface и прочей тонкой материи, но здесь лишь описание того, как обращаться с C в колибри.
Вывод — тема не нужна.
Вывод — тема не нужна.

Пожалуйста, говорите за себя. Не стоит так уж второпях решать единолично за всех остальных, что им нужно, а что нет.
Я именно говорю за себя: нигде не написал, что выступаю от лица какой-либо группы. Здесь много людей, думающих людей со своим мнением — это нормально и правильно. И поэтому то, что я говорю сам за себя, просто подразумевается.
Вот вы представьте — вам не нужен например автомобиль внедорожник (или наоборот малолитражка) и вы к каждому, увиденному в пределах вашего горизонта событий, дилеру подходите и сообщаете, что вам это не нужно, даже если он вам лично ничего не предлагал?
А статья с заголовком — это не предложение разве, прочитать и увидеть для себя интересное? А голосование — разве не способ именно выяснить востребованность? мой комментарий с выводом относится к вопросу голосования. Я не увидел интересного и высказался.
Кстати, ссылка точно в тему: diamond.kolibrios.org/hll/hll_eng.htm.
Я думаю моего участия в проекте с 2003 года было достаточно, чтобы не один раз видеть статью по ссылке, которую вы разместили. Более того вы сравниваете опытного борца тяжеловеса и начинающего легкоатлета. Если бы высказались в духе «Тема не будет интересна опытным программистам», то никаких вопросов бы не возникло. Однако ваше категоричное «Вывод — тема не нужна», очень отдает привкусом одного ресурса, на котором что не размести обязательно напишут «Эталонное не нужно!»
Каждый человек имеет право на своё мнение — полностью с Вами согласен. Но, если Вы действительно говорите только за себя, то добавляйте, пожалуйста, местоимение «мне» перед словосочетанием «не нужно». Я надеюсь, что у Вас длина комментария не ограничена размером «твита» (160 символов), что заставляет Вас сокращать свои сообщения?
Я в свою очередь надеялся, что люди здесь достаточно проницательны для того, чтобы не считать моё мнение единственно претендующим на истинность. Я не написал этого самого «мне», но и не написал «нам» — почему же нужно исходить из худшего в ненаписанном? вопрос риторический, как и с твитом.
Обычно те, которые говорят только за себя, просто молча голосуют минусом (к посту, к комментарию, в карму), и в вопросе голосования выбирают соответствующий ответ. Те, кто пишет «не нужно» отдельным комментарием, претендуют на большее, чем просто выражение своего личного мнения. Вы можете в этом не признаваться, но это именно так :-)
:) понимаю. Но… это было бы именно так, да, если бы у меня было достаточно кармы для молчаливого голосования, а пока приходится выражаться комментариями.
Вы путаете причину и следствие image Это наоборот, у Вас недостаточно кармы потому, что Вы писали такого рода комментарии. Карму я Вам сейчас поднял на 1, но это всё, что я могу для Вас сделать.
Зачем вам танцы с бубном? Всё решает простой скрипт линковки.
Java машину бы поднять на колибри :)

И теперь есть много примеров для этого компилятора: http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fdevelop%2Fktcc%2Ftrunk%2Fsamples%2F&#ad33361cac8118bd7ebc4547033e98c90 Даже загрузка системных библиотек KolibriOS. В ISO они тоже попадают, и собрать можно скриптом для KolibriOS build_all.sh

Sign up to leave a comment.