LINUX.ORG.RU

Вышла новая версия языка программирования D (2.091.0)

 ,


2

7

Изменения в компиляторе:

  • Окончательно убран деаллокатор классов.
  • Возможность сообщать о номерах строк в стиле GNU.
  • Добавлена экспериментальная генерация заголовочников C++ из внешних (extern) объявлений C|C++: DMD теперь умеет писать заголовочные файлы C++, содержащие биндинги на объявления в существующих файлах D, помеченных как extern(C) или extern(C++).

Изменения в рантайме:

  • Добавлен пропущенный в некоторых местах pthread_attr_destroy.
  • Расширенные биндинги в core.sys.windows.security.
  • Добавлен core.stdcpp.memory.unique_ptr.
  • Добавлен TFD_TIMER_CANCEL_ON_SET.

Изменения в библиотеке:

  • std.bigint теперь @safe.
  • Замена approxEqual на isClose в std.math.
  • Удалён устаревший std.format.Mangle.
  • Удалены устаревшие структуры ByLine, ByChunk, ByRecord из std.stdio.
  • std.algorithm.sorting.schwartzSort теперь поддерживает и бинарные функции трансформации.
  • Добавлена curry в std.functional.

Изменения в инсталляторе:

  • Скрипт инсталляции теперь может исполняться на Windows.

Изменения в Dub:

  • Добавлена переменная окружения SOURCE_FILES.
  • У DUB теперь стиль дополнения zsh.

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

Модератором: обратите внимание, что аннонс вышел ещё в марте, а релиз окончательно вышел неделю назад. Т.е., возможно, что новость уже была, хотя я её и не нашёл.

next_time ★★★★★ ()

nogc

Спрашивал на офф форуме несколько раз, но может здесь кто ответит:

  • Есть где-то вики или что-то подобное со статусом поддержки @nogc в языковых конструкциях и Phobos?
  • Какую библиотеку можно использовать для умных указателей, динамических массивов. Пробовал использовать automem, но не смог скастовать местный unique_ptr от реализации к интерфейсу.
import core.stdc.stdio;
import automem;
import std.experimental.allocator.mallocator : Mallocator;

interface IGetInt
{
    @nogc int GetInt();
}

class Foo : IGetInt
{
    @nogc int GetInt(){ return 42; }
}

@nogc void main()
{
    auto foo = Unique!(Foo, Mallocator).construct;
    
    printf("Value is %d!\n", foo.GetInt());

//     Unique!(IGetInt, Mallocator) ifoo = Unique!(Foo, Mallocator).construct;
//     printf("Value is %d!\n", ifoo.GetInt());
}

cast yetanother

IceRain ()
Последнее исправление: IceRain (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

Чёрт, причём именно 2.092 стабильный. Они бы ещё более мелким шрифтом ссылку на чейнджлог написали.

Хотя: «Page generated by Ddoc on Thu May 21 12:08:06 2020». Возможно, пока я писал новость,они сайт поправили и ссылки на нём.

next_time ★★★★★ ()
Последнее исправление: next_time (всего исправлений: 1)
Ответ на: комментарий от next_time

Модератором: обратите внимание, что аннонс вышел ещё в марте, а релиз окончательно вышел неделю назад. Т.е., возможно, что новость уже была, хотя я её и не нашёл.

На ЛОРе свой календарь. Когдя языковые срачи утихли, что можно постить про Ди или Раст и так далее.

kostyarin_ ()

зачем все эти хипстерские недоязыки, когда есть БОЖЕСТВЕННАЯ СИШЕЧКА! дойдите хоть до z в своих лисапедах, си уделает вас, хипстеров

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

Отсутствие IDE, проприетарный компилятор, GC.

Ерунда, главная причина D1 -> D2, и до сих пор, если почитать логи, постоянно что-то выкидывается. Трудно писать на языке, в котором твой код со временем превращается в тыкву.

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

потому что компилятор стал свободным только в 2017 году
https://en.wikipedia.org/wiki/D_(programming_language)
«Code for the official D compiler, the Digital Mars D compiler by Walter Bright, was originally released under a custom license, qualifying as source available but not conforming to the open source definition.[38] In 2014 the compiler front-end was re-licensed as open source under the Boost Software License.[3] This re-licensed code excluded the back-end, which had been partially developed at Symantec. On April 7, 2017, the entire compiler was made available under the Boost license after Symantec gave permission to re-license the back-end, too.»

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

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

А что, это для кого-то новость - что человек больше эмоциональное существо, но не рациональное?

Хорошо работать - этого недостаточно для повышения зарплаты и продвижения по службе: нужно активно себя пиарить и налаживать отношения начальством.

Сделать хороший продукт - этого недостаточно, чтобы его купили: его (продукт) нужно активно рекламировать.

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

P. S. Если что - я не утверждаю что D хорош, ровно как и то, что D чем-то плох.

Kroz ★★★★★ ()
Последнее исправление: Kroz (всего исправлений: 1)
Ответ на: комментарий от Serral

Глупости, 2 питон превратился в тыкву и что меньше стали писать? 1.4 жабакод превратился в тыкву, меньше писать на жабе не стали, примеров валом как старый код превращался в тыкву по ходу изменений в языке. Не взлетел потому что просто не нужен все значимые проекты написаны на более старых языках, новые начинать никто не рискует на чем-то новом, потому что рынок специалистов с опытом ограничен и они давно приросли корнями к своим языкам. Он бы мог взлететь если бы его под крыло взял какой-то гугламазонмайки и активно насаждал в своих продуктах, но у всех кроме амазона уже есть свои наработки которые они насаждают. Александреску или кто им там сейчас занимается надо попить пивка с Безосом и пояснить ему за D чтобы дело пошло в гору ящитаю.

anonymous ()
Ответ на: nogc от IceRain

Unique не поддерживает интерфейсы, я не знаю по дизайну это или просто эта фича пока не добавлена, посмотрим что Атила ответит. А сейчас я бы порекомендовал вместо интерфейса использовать базовый класс с абстрактными методами https://run.dlang.io/is/IiAOvm или просто абстрактный класс

yetanother ()
Последнее исправление: yetanother (всего исправлений: 2)
Ответ на: комментарий от gedisdone

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

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

И там среди изменений «Prototype Ownership/Borrowing System for Pointers», В данном виде оно, конечно, бесполезно, но может что-то со временем и выйдет.

На мой взгляд это довольно сомнительная фича. Если нужны гарантии безопасности, то уже тогда брать Раст. А так получается что ни рыба, ни мясо. Коммьюнити языка не в восторге от этой фичи и она сильно критикуется (и справедливо). Однако BFDL есть BFDL...

yetanother ()
Ответ на: комментарий от Einstok_Fair
auto obj = new Object; // Аллокатор
delete obj; // Деаллокатор

Теперь вместо delete надо вызывать obj.destroy, и GC потом сам освободит память из под класса, когда ему будет удобно

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

деаллокатор классов

Что это такое?

Аллокатор встроенный в класс. Я точных причин не помню, но их не рекомендовали использовать еще когда я начал знакомиться с D, а это было лет 9-10 назад. Так что можно проигнорировать этот момент, просто почистили язык.

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

Глупости, 2 питон превратился в тыкву и что меньше стали писать? 1.4 жабакод превратился в тыкву, меньше писать на жабе не стали

Но не каждый 2й минорный релиз же.

Пример - в 2018 я писал диплом на Питоне 3.5, проект сейчас запускается и работает. В конце того же 2018 я писал библиотеку на D, сейчас она не собирается

SR_team ★★★★ ()