LINUX.ORG.RU

Сообщения true_admin

 

Команда сайта Linux.Org.Ru заняла третье место на Yandex.Root

Группа Конференции и встречи

Администрация сайта от всей души поздравляет нашу команду, которая в нелёгкой борьбе заняла третье место в текущем этапе соревнований от яндекса. Наши ребята уступили менее 10 минут лидеру (время решения последней задачи)! К сожалению, в самый ответственный момент к DELIRIUM (он решал последнюю задачу) приехал курьер, а потом он вообще ушёл за пивом на те самые 10 минут :( Но всё равно ему спасибо за алко-код :).

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

Ребята, вы молодцы!

 ,

true_admin ()

Вышел релиз языка программирования truthon

Группа Open Source

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

1. Самое главное: оно поддерживает три типа комментариев и новые способы легко добавить!

# shell
// кресты
/* си */

2. Синтаксис слегка пришибленый (пришлось подпилить под нужды парсера), но какой уж есть. Вот небольшой пример стандартной программы «привет, Ад»:

main = (argv, argc) ->  # объявили лямбда-функцию и сохранили её в main
  name = "Hell"
  the_string = p "Hello, {name}"   # оператор p печатает на экран
                                   # и возвращает значение своего аргумента
  # fancy string interpolation
  num = 1
  string_with_number = "num = {num}"
  
  # shell invocation
  ret = `echo -e 'Bye!\nrm -rf ~'`
  p "script terminated with {ret}"

  # built-in repexp matching
  p "Hello" =~ /(H.*)/

  # branching
  1 if 1+1 == 2 else 3
  
  # expression-oriented!
  score = match
    name =~ "true_(.*)"  => 666
    name == "tailgunner" => 7
    _                    => -1

  # Higher-order functions: a(b(c()) is ...
  a . b . c  
  c $ b $ a  # pipe-line style

Итд итп. Самое главное что он expression-oriented и со статической типизацией**.

В ближайших планах переписать этот ЯП на нём же самом.

Ведутся активные переговоры с Леннартом Поттерингом по включению этого ЯП в состав systemd как средства написания юнитов.

Фичи и плюши: строгая типизация, expression-oriented, компилируемый*, есть примитивный вывод типов**. Некоторые операторы (в данный момент только print) полиморфны. Вскоре: замыкания, pattern matching, ADT, ООП с public/private/close, генерация llvm bitcode и многое другое. Циклов ещё нет, поэтому используйте рекурсию. На данный момент поддерживается только работа с целыми числами (произвольной длины) и строками. Поддержка других типов будет хорошим упражнением для пытливого читателя.

Отдельно хотелось бы отметить будущую программу сертификации. Программа сертификации задумана чтобы повысить квалификацию программистов. Программа бесплатная и, в общем- то, никаких реальных бонусов и привилегий не даст (мы же не проприетарщики). Так что я пока не знаю зачем кто-то захочет её проходить. Может, приплачивать надо...

PS Про nanopass читал

PPS Формочку заполнил

*Эта функция не работает

**Есть, но оочень глючит.

Лицензия BDSM-like

Changelog

>>> Исходники

 , ,

true_admin ()

В PyPy появилась поддержка STM

Группа Open Source

Спустя два года после начала работы в PyPy была добавлена начальная поддержка Software Transactional Memory (STM). STM позволяет избавить многопоточные приложения от блокировок.

Первые результаты показали очень хорошее масштабирование: выполнение кода в 8 потоков на неназванном четырёхъядерном процессоре увеличило скорость в 4.6 раза (процессор был с hyper-threading).

К сожалению, пока поддержка STM далека от оптимальной. Она создаёт значительные накладные расходы и на однопоточных приложениях скорость PyPy-STM не сильно отличается от CPython. Разработчики обещают в будущем исправить эту досадную проблему.

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

 ,

true_admin ()

Поздравляем нашу команду с успешным прохождением первого тура yandex.root олимпиады!

Группа Linux.org.ru

На протяжении более 12 часов велась неравная борьба с проверяющими ботами яндекса. Были задействованы strace, gdb, и многие другие средства отладки, перелопачены мегабайты кода, пропатчены squid, dropbear...

С особым удовольствием были установлены gopher (прообраз www), nntp и rsh.

В общем, на второй день сервер согласился с нашими паролями :)

Итак, поздравляем команду с восьмым местом!

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

 , ,

true_admin ()

Oracle обновляет версию ядра с 2.6.32 до 3.0.16

Группа Linux General

Oracle обновляет ядро unbreakable linux до версии 3.0.16 (предыдущее ядро базировалось на 2.6.32). Это примечательно, потому что:

  • Относительно свежее ядро попадает в корпоративный сектор (enterprise environment).
  • Oracle не стала скрывать наложенные патчи, они доступны в репозитории. Бинарные сборки свободно доступны через публичный репозиторий.
  • Заявлена совместимость с существующими приложениями, а так же с другим подобными дистрибутивами (rhel, centos, и другими).

Заявлены улучшения в масштабировании на машинах с большим количеством процессоров, в подсистемах виртуализации, кластерной файловой системе ocfs2.

Этот релиз добавил давно привычные возможности, которые не были представлены в других дистрибутивах уровня предприятий: huge pages (увеличивает производительность для тяжёлых приложений), memory compaction (уменьшение фрагментации памяти), dtrace (средство динамической отладки портированное из solaris), linux containers (lxc).

В release notes есть косвенные намёки, что поставляемая версия btrfs готова для внедрения.

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

 ,

true_admin ()

Реализация PyPy языка Python избавляется от глобальных блокировок

Группа Open Source

Глобальные блокировки в CPython (стандартная реализация языка python) долгое время были камнем преткновения и предметом многочисленных споров. В реализации PyPy, до недавнего времени, была применена схожая техника разграничения доступа к общим данным.

В настоящее время команда разработчиков проекта PyPy работает над альтернативным алгоритмом разграничения доступа к общим данным. Вместо блокировок предлагается использовать транзакции по аналогии с базами данных.

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

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

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

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

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

 , ,

true_admin ()

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