The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск компилятора для языка программирования Vala 0.50.0

18.09.2020 20:34

Вышла новая версия компилятора для языка программирования Vala 0.50.0. Код на Vala транслируется в программу на языке C, которая, в свою очередь, компилируется в бинарный файл и выполняется со скоростью приложения, откомпилированного в объектный код целевой платформы. Vala является самым используемым языком в GNOME после C (C, Vala, Python, C++), а также основным языком в Elementary OS.

Язык Vala по своему синтаксису очень похож на C# и полностью реализует объектно-ориентированный подход. Поддерживаются интроспекция, выведение типов, сборка мусора за счет автоматической подстановки вызовов деструкторов на этапе компиляции (ARC как в Swift), лямбда-функции, концепция сигналов и слотов, подобная используемой в Qt, но реализованная на уровне языка, строковые типы, обобщённое программирование, срезы массивов, оператор перечисления элементов коллекции foreach, делегаты, замыкания, интерфейсы, свойства и исключения.

Самые заметные изменения:

  • Новое ключевое слово with для синтаксиса каскадных вызовов. Внутри with поддерживается создание локальных переменных:
    
       with (var x = y ())
    

    Вызов функций, возвращающих значение:

    
       with (y ())
    

    Подключение сигналов, строгий non null режим и вызов новых "with" рекурсивно.

  • Новый синтаксис срезов - теперь пустота считаются за первый или последний элемент коллекции.
    
       array[begin:] => array[begin:array.length-1]
       array[:end] => array[0:end]
       array[:] => array[0:array.length-1]
    
  • Упрощено переписывание C-проектов на Vala по частям (когда в проекте будет множество вызовов Vala кода из C и наоборот).
  • Реализованы не виртуальные сигналы с телом функции.
  • Обеспечено наследование пространства имён потомка.


  1. Главная ссылка к новости (https://gitlab.gnome.org/GNOME...)
  2. OpenNews: Выпуск компилятора для языка программирования Vala 0.49.1
  3. OpenNews: Релиз языка программирования Haxe 4.1
  4. OpenNews: Релиз языка программирования Lua 5.4
  5. OpenNews: Выпуск языка программирования Julia 1.5
  6. OpenNews: Релиз языка программирования Go 1.15
Автор новости: gavr
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/53741-vala
Ключевые слова: vala
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (59) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Залупа (?), 21:19, 18/09/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Для ElementaryOS чтоли?
     
     
  • 2.36, Аноним (36), 10:57, 19/09/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    https://youtu.be/jwTCh7XH2t4?t=446
     

  • 1.2, Аноним (2), 21:24, 18/09/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –21 +/
    Уж проще Swift юзать чем эту поделку с поддержкой в 1,5 человека. Ну а С код если и переписывать, то только исключительно совершенно невозможно на что другое, как на Rust
     
     
  • 2.4, Аноним (4), 21:27, 18/09/2020 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Зачем переписывать си? Зачем переписывать на чуждый идеологически и практически язык?
     
     
  • 3.20, коржик (?), 23:45, 18/09/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    вы в его предложении "Если" пропустили
     
  • 3.27, Аноним (27), 05:13, 19/09/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Можно не переписывать, а просто дописывать на этом UI
     
  • 3.29, n00by (ok), 06:31, 19/09/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Зачем переписывать си? Зачем переписывать на чуждый идеологически и практически язык?

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

     

  • 1.3, Аноним (3), 21:26, 18/09/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –7 +/
    Но это не компилятор, а транслятор или транспайлер, потому что и Vala и C - это ЯПВУ
     
     
  • 2.5, Аноним84701 (ok), 21:35, 18/09/2020 [^] [^^] [^^^] [ответить]  
  • +9 +/
    > Но это не компилятор, а транслятор или транспайлер, потому что и Vala  и C - это ЯПВУ

    Уймитесь уже со своим транспайлером 🙄
    https://inst.eecs.berkeley.edu/~cs164/fa20/lectures/lecture1.pdf
    > Variant of 2: Compiler that translates program into another programming language (such as C), or into an intermediate language

    https://web.stanford.edu/class/archive/cs/cs143/cs143.1128/handouts/020 CS143 Course Overview.pdf
    > What is a compiler?
    > A compiler is a program that takes as input a program written in one language (the source
    > language) and translates it into a functionally equivalent program in another language (the target language).  

    Книга Драконов, с картинками:

    > 1.1. Language Processors
    > Simply stated, a compiler is a program that can read a program in one language -- the source language -- and translate it into an equivalent program in another language -- the target language; see Fig.1.1
    > An important role of the compiler is to report any errors in the source program that it detects during the translation process.
    >Figure 1.1: A compiler



    source program
            |
            v
    +-------------+
    |   Compiler  |
    +-------------+
           |
           v
    target program


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

     
     
  • 3.11, Абырвал (?), 22:30, 18/09/2020 [^] [^^] [^^^] [ответить]  
  • –11 +/
    Нет дружок, после транслятора требуется применять настоящий компилятор, так что иди дальше смотри свои картинки
     
     
  • 4.14, Аноним84701 (ok), 23:21, 18/09/2020 [^] [^^] [^^^] [ответить]  
  • +11 +/
    > Нет дружок, после транслятора требуется применять настоящий компилятор,

    Ну-ка, расскажи поподробнее, какой именно "настоящий компилятор" тебе потребуется после трансляции в (F/N/Y/M)ASM/WAM/машкод?
    > так что иди дальше смотри свои картинки

    Хм, и правда, чего это я. Кто такие Джефри Ульман (премия Кнута), Альфред Ахо (AWK, алгоритм Ахо-Корасика), стэнфордовцы с бекрлеевцами -- супротив целого анонимого опеннетовца? 🙄

     
  • 4.19, Аноним (19), 23:29, 18/09/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Нет дружок, после транслятора требуется применять настоящий компилятор, так что иди дальше смотри свои картинки

    Мне кажется у тебя есть только выдуманные друзья, вряд ли кто-то будет с тобой даже за руку здороваться

     

  • 1.6, Аноним (6), 21:44, 18/09/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Было бы в разы проще если бы мир сидел на Си, Фортране и Кобал. А не поделки ваяснов использовал
     
     
  • 2.9, Абырвал (?), 22:27, 18/09/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Однозначно! Но все это поймут, только когда ты сам напишешь hello world без подсматривания в поисковике.
    Ждёмс
     
  • 2.13, Аноним (13), 23:14, 18/09/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Кобал это что-то среднее между Кобол и Кабал?
     
     
  • 3.22, Аноним (22), 00:53, 19/09/2020 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Компилялити.
     
  • 3.58, Аноним (58), 14:02, 22/09/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Это от Каббала :)
     
  • 2.38, Аноним (38), 11:26, 19/09/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    И паскале с ада.
     
     
  • 3.54, Организация Объединённых Тюленей (?), 15:54, 20/09/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Правильно говорить "из ада".
     

  • 1.7, бедный буратино (ok), 22:09, 18/09/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    Язык программирования Хала 0.5

    - Обладает троичной нечёткой логикой
    - Работа с очередью стека методом "Вас здесь не стояло!"
    - Система приёма данных "Моня, ну ты посмотри на этого поца!"
    - Очуметь!

     
     
  • 2.21, Oxyd76 (?), 23:47, 18/09/2020 [^] [^^] [^^^] [ответить]  
  • +9 +/
    Шоб я так жил, как вы прибедняетесь!
     

  • 1.8, Аноним (8), 22:16, 18/09/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Берем этот ЯП, потом ПО на нем и.. упс! А чо оно все такое странное?
     
     
     
     
    Часть нити удалена модератором

  • 4.31, n00by (ok), 07:05, 19/09/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Посмотрел. У меня после прочтения тьютора по языку получилось, что я могу тыкать в лентяйку и управлять видосиками и музычкой в браузерах с плагином PlasmaBrowserIntegration из окружений Sway и Gnome (можно было и оригинальный плагин на KF/Qt почикать, но как-то не эстетично, да и вариант на Vala грубо вдвое компактнее что в исходнике, что в исполняемом виде).

    Но я бы с удовольствием посмотрел и на Ваш попахивающий опыт, вдруг упускаю что важное?

     

  • 1.12, 56u56f (?), 23:12, 18/09/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    На нём можно писать без gc и под микроконтроллеры?
     
     
  • 2.15, Bdfybec (?), 23:23, 18/09/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    только с 8:00 до 16:00 по рабочим дням.
     
  • 2.18, Аноним (19), 23:26, 18/09/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Все объекты наследуются от GObject. На микрокотроллеры придется тащить весь GLib.
     
     
  • 3.33, это (?), 09:24, 19/09/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Объекты без gobject шо, выпилили?
     
     
  • 4.43, gavr (ok), 17:33, 19/09/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Из Си?
     
  • 3.46, gavr (ok), 17:44, 19/09/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Абсолютно неверно! объектов 3 вида, и только один наследуется от GObject. Есть компакт классы алоцируемые вот этим https://www.opennet.ru/docs/RUS/glib_api/glib-Memory-Slices.html которые на порядок быстрее и легковеснее, но конечно интроспекция с ними не работает.
    http://zee-nix.blogspot.com/2008/09/think-before-you-create-gobjects.html
     
  • 3.59, Аноним (58), 14:12, 22/09/2020 [^] [^^] [^^^] [ответить]  
  • +/
    -Wl,--no-whole-archive ?
     
  • 2.44, gavr (ok), 17:38, 19/09/2020 [^] [^^] [^^^] [ответить]  
  • +/
    GC в привычном понимании тут нет, все управление памятью в compile time.
    Вот про ARC https://oxozle.com/2017/05/10/sravnenie-arc-i-garbage-collector/
    Вот про эмбду на Vala:
    https://www.embeddedrelated.com/showarticle/1019.php#:~:text=Besides%20va
     
     
  • 3.47, Аноним84701 (ok), 18:08, 19/09/2020 [^] [^^] [^^^] [ответить]  
  • +/
    >  все управление памятью в compile time.

    В мечтах, разве что.
    > Вот про ARC https://oxozle.com/2017/05/10/sravnenie-arc-i-garbage-collector/
    >> издержки на рантайм минимальны (но все же они есть, т. к. считает ссылки ARC в рантайме)

    https://wiki.gnome.org/Projects/Vala/ReferenceHandling
    > Each time a reference type object is assigned to a variable (referenced) its internal reference count is increased by one (ref), each time a reference variable goes out of scope the object's internal reference count is decreased by one (unref).

    Автоматический подсчет ссылок  -- это таки "щелканье" счетчиком ссылок для объекта в рантайме.
    Как в Perl или (С)Python (только там прикрутили еще и отключаемый gc.disable() сборщик циклических зависимостей).
    В "compile time" только изменение счетчика вставляется (ну и компилятор, в принципе, может вставить аналог free при выходе объекта из зоны видимости, при условии, что ссылка на объект никуда не передавалась).
    Потому что "настоящее" "compile time" управление памяти требует "немного" более сложную  семантику ЯП -- так нелюбимые здесь некоторыми комментаторами "закорючки" и "мозголомные" коцепты владения-времени-жизни раста там не от хорошей жизни придумали.

    Впрочем, в Vala можно делать и ручками:
    >You can always choose to do manual memory management if you feel as if you must have full control.

    ...
    >Compact classes do not support reference counting by default.

     
     
  • 4.64, gavr (ok), 23:09, 17/02/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >ARC

    Да, и это все же куда быстрее походов по всей структуре объектов разложенных по кучам быстро и долгоживущих + объекты умирают детерминировано(RAII для всех ресурсов вместо using) и нет плавующего мусора.

    >>Compact classes do not support reference counting by default.

    Да, они имеют семантику владения через unowned, owned модификаторы ссылок, еще к ним можно прикрутить счетчик или копирование. https://wiki.gnome.org/Projects/Vala/ManualBindings#Compact_Classes

     

  • 1.17, Аноним (19), 23:25, 18/09/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Гвоздями прибито к GLib. Язык не имеет шансов на выживание.
     
     
  • 2.23, Аноним (23), 01:16, 19/09/2020 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Для языка, от которого отказались в его родной среде GNOME, он показывает необыкновенную живучесть. Что касается GLib, то это фактически лучшее, что случилось с языком C на GNU/Linux, так что "пригвоздёванность" здесь не только не недостаток, но и преимущество.
     
     
  • 3.26, Аноним (19), 05:03, 19/09/2020 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Убогая лицензия, минус кросплатформенность.
     
     
  • 4.28, Аноним (23), 06:25, 19/09/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Лицензия норм -- LGPL, для либ самое то. Насчет кроссплатформенности -- мне она не нужна. Единственная ось, в которую я вижу смысл вкладывать усилия -- это GNU/Linux. А вантузоиды и маководы сами прекрасно проживут в своем проприетарном гулаге. Если им нужно, пусть сами шлют патчи.
     
  • 4.30, funny.falcon (?), 06:44, 19/09/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А что значит «минус кросплатформенность»?
    GTK софт есть на всех основных платформах (Linux, *BSD, Windows, MacOS).
    Ок, на мобилках нет.
     
     
  • 5.32, fsb4000 (?), 08:20, 19/09/2020 [^] [^^] [^^^] [ответить]  
  • +/
    >Ок, на мобилках нет

    На Android и IOS нет, а на мобилках есть. Вот на librem-5 есть Glib и Gtk:
    https://puri.sm/products/librem-5/pureos-mobile/

     
  • 5.40, Усатый (?), 14:15, 19/09/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Я в те времена спокойно завел GLib & GObject, а потом и Vala, на  Blackberry 10. Не думаю что для Android оно сложнее будет.
     
  • 4.45, gavr (ok), 17:39, 19/09/2020 [^] [^^] [^^^] [ответить]  
  • +/
    GLib полностью кроссплатформенна.
     
  • 2.24, Аноним (24), 02:37, 19/09/2020 [^] [^^] [^^^] [ответить]  
  • +7 +/
    > Гвоздями прибито к GLib

    А что плохого в GLib?

    > Язык не имеет шансов на выживание.

    Ну, буквально. ООП-язык общего назначения, у которого синтаксис от C#. Писать на нем вполне приятно. 2 DE на нем пилят. Всё лучше чем С++.

    Этому языку уже 14 лет, ваш ровесник, между прочим. Рановато хоронить.

     

  • 1.34, Иваня (?), 10:07, 19/09/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Мне не нравится синтаксис C# (слишком многословно!), а значит не нравится и Vala синтаксис.
     
     
  • 2.35, n00by (ok), 10:14, 19/09/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Специально для Вас Vala понимает ещё вот такой синтаксис:



    init
    print "Hello World"



    https://wiki.gnome.org/Projects/Genie
     
     
  • 3.39, Иваня (?), 12:25, 19/09/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вот это уже получше. Но мне пока ненужно
     
  • 3.55, Аноним (55), 23:11, 20/09/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Мне кажется, или оно скорее мертво чем живо? Не нашёл на нём живых проектов.
     
     
  • 4.56, n00by (ok), 15:05, 21/09/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Похоже, Вы правы, говоря о проектах. Но самому языку вряд ли что угрожает -- трансляция происходит через общее синтаксическое дерево с Vala.
     
  • 4.63, Алик (?), 14:14, 13/11/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Так понимаю на ней переписка ось el elementory, а ее исходники лежат на githabe
     

  • 1.37, Аноним (37), 11:06, 19/09/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    жалко что гноморазрабы запилили это ненужно, вместо того чтобы использовать D, у которого отличные gtk биндинги
     
     
  • 2.51, leap42 (ok), 05:44, 20/09/2020 [^] [^^] [^^^] [ответить]  
  • +/
    а что хорошего в D? я правда не в курсе. он разве не похож на плюсы?
     
  • 2.52, Аноним (52), 08:40, 20/09/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Жалко D разрабы кучу лет носились с проприетарным компилятором и стандартную библиотеку не могли запилить.
     

  • 1.41, Аноним (41), 17:18, 19/09/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ждём переписывания кода GTK на Vala.
     
     
  • 2.49, Анонимчик (?), 22:02, 19/09/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    а зачем?
     
     
  • 3.57, Аноним (58), 13:56, 22/09/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Для человековосприятия в виде нормального ОО-кода.
     

  • 1.50, аноним3 (?), 02:51, 20/09/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    затем чтоб еще сильнее жрала оперативу и ресурсы. производителям нравится увеличение продаж.))
     
  • 1.53, FixingGunsInAir (ok), 12:15, 20/09/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Этот ЯП выглядит как костыль. До кого-то дошло, что весь этот Boilerplate в коде на базе Glib никому не сдался, особенно новичкам (в программировании и/или в Linux). Но в то же время, кто-то ностальгирует по Mono...

    Хотя, эта надстройка - это лучше, чем ничего.

     
  • 1.60, Xasd6 (?), 15:31, 22/09/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    using для generic так и не смогли осилить?
     
  • 1.61, Аноним (61), 23:42, 27/09/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Раньше С транслировался в Ассемблер и можно было использовать Ассемблерные вставки кода, т.е. по вашей логике С тоже не язык, а транслятор какой-то...

    Валя не использует Gtk bindings, она напрямую вызывает GLib/Gtk функции, VAPI нужны для компиляции только. Также в проект можно включать С код и соответственно Ассембоерные вставки для архитектурных расширений например SSE...

    Из минусов нет нормального IDE, и нет общей стабильного фреймворка, но это уже к Глиб и Ко...

    Есть много кросплатформенных проектов на Вала, даже некоторые портировали в игры в Андроид.

    Для Андроидов можно использовать вместо наивного С апи...

     
  • 1.62, Алик (?), 14:09, 13/11/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Пишу на Java, из за старого железа установил на логический диск elementory os, что бы с нее писать программы, заодно попробывать помщучать, перенести свои программы на Vala, gtk,  но в процессе установок ide у меня кровь из глаз пошла,я так и не смог написать  и строчки.  Вот думаю то ли с винды это делать но как, толи свой редактор писать? (((
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру