LINUX.ORG.RU

Язык программирования Crystal 0.6.0

 , ,


1

2

Состоялся выпуск версии 0.6.0 языка программирования Crystal.

Язык программирования Crystal разрабатывается с такими целями:

  • идентичный Ruby синтаксис, либо же максимально схожий с ним
  • отсутствие необходимости указания типов переменных и аргументов методов
  • вызов кода на Си с помощью биндингов, написанных на Crystal
  • проверка и генерация кода во время компиляции
  • компиляция в эффективный нативный код

Ответы авторов Crystal на вопрос «для чего это всё?»:

  • нам нравится производительность при написании кода на Ruby
  • нам нравится производительность при выполнении кода на Си
  • мы хотим объединить лучшее из этих двух миров
  • мы хотим, чтобы компилятор понимал, что мы имеем в виду без указания типов
  • мы хотим полный ООП
  • и да, мы не хотим писать код на Си только для того, чтобы он работал быстрее

Внешний вид:

# Compute prime numbers up to 100 with the Sieve of Eratosthenes

max = 100

sieve = Array.new(max + 1, true)
sieve[0] = false
sieve[1] = false

(2...max).each do |i|
  if sieve[i]
    (2 * i).step(max, i) do |j|
      sieve[j] = false
    end
  end
end

sieve.each_with_index do |prime, number|
  puts number if prime
end

Текущее состояние:

  • язык в стадии pre-alpha, архитектура языка в активной разработке
  • компилятор языка Crystal написан на языке Crystal
  • используется традиционный Boehm-Demers-Weiser's сборщик мусора, что будет изменено в будущем

В версии 0.6.0, кроме исправления ошибок, следующие изменения:

  • Function переименован в Proc
  • Pointer и Tuple теперь подразумеваются компилятором как struct
  • потоко-безопасные магические переменные

Исходный код на GitHub

Для установки на GNU/Linux доступны пакеты для Debian, Ubuntu, RedHat и CentOS.
Для системы OS X доступна установка через homebrew.
Так же доступен универсальный бинарник, который можно просто скачать, запустить и пользоваться.

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



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

по концепту похоже на nimrod

есть где какие сравнения?

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

Это нелепое, мерзопакостное поделие, которое не то что рефакторить, но даже читать практически нереально.

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

А я вот порой думаю, что хуже питон или перл. Всё таки на перле, если приложить усилие, можно писать читаемый код. На петоне это практически нереально.

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

Нелепые люди, такие нелепые. Puppet/chef/vagrant/capistrano, практически весь серьёзный софт для управления кластерами и гридами написан на руби. А петоне сколько не пытались реализовать что-нибудь подобное, всё всякий нелепый шит получается, вроде ансибла.

anonymous
()

компилятор языка Crystal написан на языке Crystal

Т.е. чтобы собрать компилятор, нужно сначала скачать блоб с компилятором? Лесом.

slovazap ★★★★★
()

Круто! А где-то уже используете?

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

Не знаю, сам пишу только на brainfuck. Самый читаемый код получается.

Klymedy ★★★★★
()

Вау, новый язык программирования!

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

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

Ну то есть закладка в бинарном gcc/clang должна быть такова, чтобы определять что компилятор (и gcc и clang) собирает код gcc или clang любой версии и вставлять туда свой же исходный код, который должна при этом хранить явно. Честно говоря мне не верится что это возможно, хотя даже если оно и так наверняка есть способы найти этот лишний код, который должен быть достаточно объёмным. А если не так, значит где-то закладка да спалится, а если не спалилась значит её нет и пакет с бинарным компилятором чист - им можно спокойно собирать новые версии. Кое-что из этого я ради интереса проверял (gcc->clang->gcc, x86->arm->sparc->x86), и получал в итоге бинарник идентичный исходному, так что в нём лично уверен.

А теперь вернёмся к crystal - я внимательно слушаю занимательную историю о том что из первого параграфа умеет его компилятор, чтобы ваш блоб можно было проверить.

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

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

anonymous
()

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

anonymous
()

А кто-то уже побенчил?

олсо, грамматика руби по размерам лишь немного уступает последнему стандарту це++, этот крустал может похвастаться чем-то подобным?

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

Документации (вменяемой) в ссылках из новости нет.

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

Но при этом этот блоб поступает из относительно доверенного источника (от моего дистрибутива)

Шатлврот на лоре!

makoven ★★★★★
()

отсутствие необходимости указания типов переменных и аргументов методов

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

makoven ★★★★★
()

потоко-безопасные магические переменные

Можно на человеческий язык перевести?

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

Это что то из области глубинного волшебства и чёрной магии. Т.е. в данном случае ничего хорошего, сомнительная абстракция.

wakuwaku ★★★★
()
Ответ на: комментарий от A-234

в оригинале «Thread-safe magic variabels», если ты знаком с руби, то это глобальные $-префиксные переменные, почему они стали магическими и потоко-безопасными подробно объясняется здесь.

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

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

лол. управляю кластерами и гридами, тулзы на питоне. чяднт?

кстати, ансибл заруливает чеф не глядя. кроме того, что одно, что другое к «управлению кластерами» имеет такое же отношение, как и ты.

val-amart ★★★★★
()
Ответ на: комментарий от matumba

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

val-amart ★★★★★
()
Ответ на: комментарий от A-234

Я, собственно, «волшебные» никак распарсить не могу.

С такими знаниями вон из профессии!

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

А что, где-то пробелы отсутствуют? Ви таки бог однострочников?

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

А я вот порой думаю, что хуже питон или перл. Всё таки на перле, если приложить усилие, можно писать читаемый код. На петоне это практически нереально.

ой да ладно? сравнил язык у которого в философии прописано «readability counts», и язык, в котором регулярки возведены в абсолют, и сделал противоположный и неправильный вывод

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

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

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

ты знал, что Матц — мормон? И не просто мормон, а мормон-шишка: епископ.

а, теперь понятно почему фанаты руби ведут себя как сектанты

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

В моей вселенной для всего этого есть альтернативы в виде ansible, docker, zookeeper, etcd, тысячи их.

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

не скромничай, раскрой мысль — в чем именно по-твоему заключается моя тупость?

val-amart ★★★★★
()
Ответ на: комментарий от ymn

Без рельс руби никому нафиг не сдался.

Интересная мысль в разрезе, что действительно не хватает killer app. Так я помню еще одну очень интересную реализацию руби - maglev. Тоже, видимо, не нашлось применения. Но если будет поддерживать 99% библиотек, то, вполне возможно, взлетит.

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

А петоне сколько не пытались реализовать что-нибудь подобное, всё всякий нелепый шит получается, вроде ансибла.

Справедливости ради juju.

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

Но лучше бы писали на ruby. Вот спросите питонщиков, они пользуются juju. Большая часть их вообще вендузятники.

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

Выбрал бы плесень ржавчину, будь мне очень скучно. Она куда более готова и её разработчики преследуют вполне определённые цели, в отличие от сабжа. За 3 года от преальфы до юзабельного состояния вполне не плохо.

wakuwaku ★★★★
()
Ответ на: комментарий от special-k

Когда хочешь в IDE поменять какое-либо поле или проперти или название метода. Нажимаешь рефактор и тут питон, руби, пхп и другие подобные идут лесом. Потому-что IDE не может отрефакторить без знания типа до выполнения кода.

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

«биндингов» - нет такого слова

Жопа есть, а слова нет?

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