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)

компилятор языка 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 ★★★
()
Ответ на: комментарий от matumba

Да уж. Что было раньше, курица или яйцо?

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

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

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

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

гыгыггы :) unrar.rar!

Почему-то требование gcc для сборки gcc (а также mono для сборки mono, sbcl для сборки sbcl, и т.д.) никого не удивляет, а тут сразу гыгы-гага.

man bootstrap

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