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 ()

что скажут эксперты из отдела глубокого анализа? взлетит компилируемый руби или нет?

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

Интересная идея. Но иногда отсутствие явного указания типов мешает. Например рефакторингу. Я вот думал когда-то про питон с типами и чтоб в Си транслировался (или LLVM) (но это всё мечты).

RevenantX ★★★ ()
Последнее исправление: RevenantX (всего исправлений: 1)

Лучше бы синтаксис Python был. И производительность Asm.

Klymedy ★★★★★ ()

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

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

ты себе не давал обещание, что с 2015 года завязываешь с беспочвенными и нелепыми стереотипами?

redhat ()

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

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

Эксперты спросят, авторы языка слышали когда-нибудь про nim и julia?

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

Я вот думал когда-то про питон с типами и чтоб в Си транслировался (или LLVM) (но это всё мечты).

И еще один nim. Трипл-килл.

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

Лучше бы синтаксис Python был.

У Python уже появился синтаксис? Пробелы не в счёт.

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

Если взять ключевые слова из руби, то это не станет руби, увы.

tensai_cirno ★★★★★ ()

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

Ничего не выйдет! Питон уже изобрели.

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

Достигнет 1.0 - можно будет пытаться протаскивать куда-нибудь.

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

сколько они его пилят уже, больше 6 лет и всё никак?

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

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

loz ★★★★★ ()

сейчас на опеннет выложу

anonymous ()

Ерунда какая то. Терпеть не могу всякие begin ... end. Но если взлетит, конечно будет хорошо.

Hertz ★★★★★ ()

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

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

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

Да и компилируемых руби еще особенно не было. Новость написана один раз, как когда-то про Rust, чтобы те, кому это может быть интересно — узнали об этом, присоединились к разработке или просто отслеживали его развитие.

Надо же где-то узнавать о новых разработках, почему нет.

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

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

redhat ()

очередное мёртворождённое ненужно.

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

Терпеть не могу всякие begin ... end.

+1

anonymous ()

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

$ cd ~/src
$  wget -q 'https://github.com/manastech/crystal/archive/0.6.0.tar.gz' -O crystal-0.6.0.tar.gz
$  tar xaf crystal-0.6.0.tar.gz 
$ cd crystal-0.6.0
$ make
CRYSTAL_CONFIG_PATH=`pwd`/src ./bin/crystal build  -o .build/crystal src/compiler/crystal.cr
./bin/crystal: line 10: crystal: command not found
Makefile:26: recipe for target '.build/crystal' failed
make: *** [.build/crystal] Error 127

по всей видимости, для сборки компилятора нужен собранный компилятор. okay.jpg

littlechris ★★ ()

хватит писать языки! у нас уже есть c, c++ и java! нам больше не нужно!

unt1tled ★★★★ ()

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

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

Ответа не услышал. Есть как минимум Ди для всех этих причуд, но когда чешется написать СВОЙ язык, носорога уже ничто не остановит :)

matumba ★★★★★ ()

А какой у них вывод типов?

O02eg ★★★★★ ()

За 5 лет существования он всё ещё в стадии преальфы и в «активной разработке», думаю всем всё ясно. Как игрушка может и сгодится.

сборщик мусора

это совсем не очевидно, но все проблемы где-то отсюда.

мы хотим в полный ООП

beastie, на каком это языке?

wakuwaku ★★★★ ()

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

Ну то есть все те люди, что предыдущие 30 лет писали языки - они не этого хотели? Или может стоит почитать, ПОЧЕМУ у них не особо получалось, чтобы не городить очередной мёртворождённый велосипед?

matumba ★★★★★ ()

redhat,напиши список парадигм, под которые заточен ЯП.

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

рубинус пилят уже 10 лет (с 2006 года), кристалл около двух лет, когда автор перешел в контору, которая тоже подключилась к этому делу, сравни результаты: https://github.com/acurley/ruby_vs_crystal

// да, он начал около 5 лет назад, но реальная работа идёт только второй год.

сравнение по ссылке выше.

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

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

redhat ()

Сколько уже велосипедов придумали?

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

Это бенчмарк запуска рантайма, разве что. И да, кристал — не руби, я вообще не понимаю, зачем их сравнивать.

tensai_cirno ★★★★★ ()

Какое всё-таки неюзабельное говно современная веб-верстка.

tailgunner ★★★★★ ()

«Pluralitas non est ponenda sine necessitate»(С) Уильям Оккам XIV век

«Есть вещи, знание которых не приносит пользы, а незнание их не приносит вреда.»(С) Абу Зейд Абдуррахман ибн Мухаммад аль-Хадрами (Ибн Хальдун) XIV век

Bioreactor ★★★★★ ()

Не верю

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

Camel ★★★★★ ()
Ответ на: Не верю от Camel

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

Fixed.

loz ★★★★★ ()
Последнее исправление: loz (всего исправлений: 1)
Ответ на: Не верю от Camel

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

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