Вышел Ruby 2.1

    Спецификации Ruby обновились до версии 2.1.0. В новой версии языка программирования сделано несколько эволюционных изменений. В неофициальных бенчмарках на Rails версия 2.1 показывает результат примерно на 20% выше, чем 2.0, которая, в свою очередь, на 60-70% быстрее 1.9.3.

    Вкратце, самые важные из них:

    • VM (кэширование методов)
    • новый сборщик мусора RGenGC (см. презентацию ko1 на RubyKaigi и на RubyConf 2013)
    • изменения в синтаксисе
      • новая запись дробей с использованием двух слэшей ("//") между числителем и знаменателем, см. #8430
        • 1 // 2 == Rational(1, 2)
        • 1 // 1 == Rational(1, 1)
        • 0 // 1 == Rational(0, 1)
      • новые суффиксы i, r и ri для записи комплексных и рациональных чисел
        • "42r" и "3.14r" расцениваются как рациональное число Rational(42, 1) и 3.14.rationalize, соответственно. Но экспоненциальная форму с суффиксом 'r', такая как "6.022e+23r", не принимается.
        • "42i" и "3.14i" расцениваются как Complex(0, 42) и Complex(0, 3.14), соответственно.
        • "42ri" и "3.14ri" расцениваются как Complex(0, 42r) и Complex(0, 3.14r), соответственно.
    • определение функции def теперь возвращает символ её названия вместо nil, см. #3753
    • уточнения #8481 #8571
    • Bignum
      • использует GMP (GNU Multiple Precision Arithmetic Library) для ускорения операций над большими числами, см. #8796
    • добавлен метод Array#to_h — создание хэша из массива
    • String#scrub #8414
    • Socket.getifaddrs #8368
    • RDoc 4.1.0 и RubyGems 2.2.0
    • “literal”.freeze теперь оптимизирован #9042
    • добавлен Exception#cause #8257
    • обновлены библиотеки JSON, NKF, rake, RubyGems, и RDoc.
    • удалена библиотека curses. #8584

    Ruby — высокоуровневый язык для быстрого и удобного объектно-ориентированного программирования. Его создатель Юкихиро Мацумото постарался совместить лучшие черты своих любимых языков Perl, Python, Smalltalk, Eiffel, Ada и Lisp в поисках грамотного баланса между функциональным и императивным программированием. Целью было создание языка, более мощного, чем Perl, и более объектно-ориентированного, чем Python, пишет Википедия. Основное назначение Ruby — создание простых и в то же время понятных программ, где важна не скорость работы программы, а малое время разработки, понятность и простота синтаксиса.

    Мацумото занимается разработкой Ruby до сих пор, и версия 2.1.0 — его рождественский подарок всем программистам.

    Более подробный список изменений в 2.1.0 см. здесь, а также в презентации “All about Ruby 2.1”.
    Поддержать автора
    Поделиться публикацией

    Похожие публикации

    Комментарии 26

      0
      Ну хоть бы ссылочку на википедию приложили, откуда был с минимальными изменениями взят третий снизу абзац в вашей статье.
        0
        ok!
        0
        String#scrub #8414


        По ссылке все на японском.
        0
        Bignum на GMP = Fixed Point real?
          0
          VM? Имеются ввиду виртуальные методы?

          А у вас там что, наследование не делегированием разве сделано?
          (я питонер)
            0
            VM — Virtual Machine. Насколько я понял, изменен механизм кеширования методов, который учитывает фактические вызовы.
          • НЛО прилетело и опубликовало эту надпись здесь
              +6
              не холивора ради, но какие у вас практические претензии к этому языку касательно именно этих двух слов? Было бы интересно услышать вашу аргументированную позицию.
              • НЛО прилетело и опубликовало эту надпись здесь
                • НЛО прилетело и опубликовало эту надпись здесь
                    +2
                    Как вы это делаете? За 8 лет разработки разной плотности дебаггер мне доставлял неприятности пару раз, и я уже не вспомню чем.
                    • НЛО прилетело и опубликовало эту надпись здесь
                        0
                        Давайте по-простому, есть у нас «глючный вылетающий дебаггер», как бы мне повторить это поведение?
                        • НЛО прилетело и опубликовало эту надпись здесь
                            0
                            А мне это действительно надо, так как основной язык моей разработки — ruby, основная гигантская надстройка rails над глючным дебаггером.
                            Т.е. вы утверждаете, что ваш дебагер (кстати какой) глючит, т.е. ведет себя неожиданно. Если вы утверждаете, что он глючит, значит это событие носит систематический характер, и память на вашем компе вовсе не битая, и операционка вовсе не винда.
                            Вашим голословным утверждениям никто не поверит, если вы ради поддержки своего утверждения (а вовсе не ради спора в коментах) не лезете искать систематическую ошибку, которую, видимо, кроме вас никто не видел.
                            • НЛО прилетело и опубликовало эту надпись здесь
                                0
                                Если нас читают дети, то важно детям дать понять, что ваше мнение голословно, а то вдруг поверят.
                                Есть люди которые верят в бога и высказывают свои мнения, чтобы это мнение могли прочитать те, кто своего мнения еще не составил, но читать уже умеют, чтобы увидели, что есть те, кому агностицизм перестал нравится :) Однако даже эти утруждают себя доказательствами, какими бы спорными они ни были.
                                О каких пытках вы говорите, я вполне комфортно для себя способен менять мнение.
                                • НЛО прилетело и опубликовало эту надпись здесь
                                    0
                                    Я например не настолько крут, чтобы завтра все бросить и пойти в .Net. Тот уроевнь на котором вы кодите, судя по ощущениям, по крайне мере для меня, не очень-то достижим. Все мои надежды и мечты связаны исключительно с сообществом, а кто как не оно, является потребителем и двигателем таких закрытых социумов? Я обычный потребитель, хоть и разработчик.
                                    Тем более ваше мнение важно для сообщества. Я искренне прошу забыть нашу взаимную неприязнь, если такая могла появиться, и, в году тому, что вы можете оказать нам неоценимую услугу, показав на каких процессах руби плох, чтобы мы смогли внести необходимые изменения в код или в мозг. Пару стартапов может сможет выжить, выбрав правильный продукт.
                                      +2
                                      Не могу с вами не согласиться, что уж слишком много восхищения, аж приторно. Но я думаю это явление уже идет на спад. Если не секрет с чего пришлось вернуться до того как понадобилось решить эту задачу, то есть с чем вы работаете каждый день помимо Ruby и собственно в чем заключается эта задача?
                                        0
                                        Это потому, что, видимо, вы снаружи. Внутри сообщества негодований очень много.
                                        +3
                                        просто тут на лицо фундаментальная ошибка — вы не отделете язык от инструментария, занося всё в минусы языку. Кстати, каким инструментарием вы пользуетесь?
                          +2
                          да вот уже неделю сношаюсь с этим удобным языком

                          Зачем же так грубо? Просто уделите ему побольше внимания и взгляните на этот язык непредвзято. Не надо сношаться, попробуйте полюбить :)

                          С первого взгляда Ruby очень простой и кажется что «вот как щас сяду и напишу за пару дней», но при более длительном изучении обнаруживаются детали, которые сложно понять и принять в один момент. Пожалуйста, будьте терпеливы и вы обретете прекрасного помощника в лице Ruby.
                        0
                        Именно так!
                        0
                        Нет такого синтаксиса, как 1//2: eval.in/83397

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

                        Самое читаемое