
Evgeny
08.02.2018
11:19:48
и будет тебе nothrow
если хочется без GC, то добавляй @nogc, но тогда придется отказаться от большой части фобоса, от многих фишек с массивами. Короче тоже самое что и в betterC
лучше бы научили обычный режим избавляться от ненужного мусора
кстати, если ты в режиме betterC сделаешь new ты думаешь оно выдаст ошибку? А вот хрен там. Ошибка вылезет только на стадии линковки

Google

Maxim
08.02.2018
11:25:20
по сути, кроме линковки он ничего и не меняет

Evgeny
08.02.2018
11:25:40

Maxim
08.02.2018
11:26:08
даже тесты и статические конструкторы писать можно, просто они вызываться не будут

Evgeny
08.02.2018
11:26:36

Maxim
08.02.2018
11:27:23
как по мне, BetterC имеет право на жизнь в качестве «низкоуровневого» диалекта языка
эдакая удобная штука для того, чтобы не линковать всё, что нужно не линковать)

Evgeny
08.02.2018
11:27:50

Maxim
08.02.2018
11:28:22
ну так и развивать его надо в этом направлении, не всё же сразу)

Evgeny
08.02.2018
11:28:23

Pavel
08.02.2018
11:29:12
Ну да, должно быть, но по факту нет

Maxim
08.02.2018
11:29:22
ну вот видишь, деструкторы не вызывались из-за того, что завязаны на рантайм, scope(exit) туда же, потом это починили)

Google

Maxim
08.02.2018
11:30:00
осталось дать возможность перегрузки new и delete, и получим BetterC++

Evgeny
08.02.2018
11:30:27
а то delete вообще объявлен deprecated уже лет 10 как :)
10 конечно утрированно, но очень давно
кстати new можно перегрузить через зад, оторвав стандартный рантайм, и написав свой вариант.

Maxim
08.02.2018
11:32:50

Dmitry
08.02.2018
11:33:04
D3 все же нужен... много лишнего наворочено
Ди во вторые плюсы превращается

Pavel
08.02.2018
11:33:37
А что бы ты убрал?

Maxim
08.02.2018
11:33:49
мне кажется, только со всякими атрибутами намудрили, остальное пока ок)

Evgeny
08.02.2018
11:34:24
safe по дефолту, выкинуть inout
транзитивный const и immutable - в пень

Maxim
08.02.2018
11:35:17
safe по дефолту поломает старые исходники)

Evgeny
08.02.2018
11:35:26
ну так это же D3
D2 и D1 тоже несовместимы

Maxim
08.02.2018
11:36:05
ну ради атрибутов форкать язык и делать его несовместимым — не рационально)

Evgeny
08.02.2018
11:36:32

Maxim
08.02.2018
11:37:17

Evgeny
08.02.2018
11:38:00
я бы вообще сделал бы все как в плюсах , только с дишным синтаксисом

Google

Evgeny
08.02.2018
11:38:24
идеальный для меня язык
если бы в плюсах сделали нормальную рефлексию, макросы и человеческие шаблоны, я бы вернулся на него незадумываясь

Dmitry
08.02.2018
11:39:44

Evgeny
08.02.2018
11:40:06
Миксины так просто убрать нельзя, только на макросы заменить
файберы на мотив горутин, значит встраивать их поддержку в компилятор

Dmitry
08.02.2018
11:41:07
Ряд конструкций сделал бы попроще. Уж больно мне for in в питоне нравится
Свитч бы выкинул и паттерн матчинг сделал бы вместо него

Evgeny
08.02.2018
11:41:48

Dmitry
08.02.2018
11:42:15
Просто надо чтобы язык не был избыточным

Pavel
08.02.2018
11:42:21

Evgeny
08.02.2018
11:42:44

Pavel
08.02.2018
11:42:54
А легкую асинхронность хочется использовать почти всегда.

Evgeny
08.02.2018
11:43:13
switch - норм, у нас тут не ФП

Dmitry
08.02.2018
13:06:22
От switch'a до pattern matching'a уже рукой подать, их можно весьма органично объединить: https://code.haxe.org/category/beginner/pattern-matching.html

Evgeny
08.02.2018
13:34:07
такой паттерн-матчинг достаточно примитивен
но его можно реализовать, наверное
такой, честно говоря, не особо нужен
хотя матч по структурам неплох, да

Oleg
08.02.2018
13:39:07

Google

Oleg
08.02.2018
13:40:25
и чем mixin'ы не нравятся? отладка сложновата, но в остальном инструмент отличный
кстате лол http://m.cnews.ru/news/top/2018-02-08_v_rossii_napishut_svoj_obektnoorientirovannyj
что за защиту данных там придумали я не понимаю
просто похоже на очередной распил, целесообразности не вижу
если кто-то понял про модульную защиту данных, объясните пожалуйста)

Pavel
08.02.2018
13:45:14
да это обыкновенная простыня от журнализдов, которые услышали слово "модульность" и подумали что оно очень крутое и сложное. И вписали в свою статью.
Без прочтения како-нибудь нормального whitepaper (как сейчас модно это называть) даже обсуждать особо не имеет смысла.

Oleg
08.02.2018
14:03:07
ну тоже верно

Pavel
08.02.2018
14:05:45

Dmitry
08.02.2018
14:21:41
На форуме опять про D3 говорят

Admin
ERROR: S client not available

Pavel
08.02.2018
14:27:00
Ну вот про go например тоже очень много говорят, но все их крики про дженерики и исключения тупо игнорятся. И нормально плывут.

Igor
08.02.2018
15:02:55
Зачем строить свою иерархию? Просто не используй new
а как это выглядит практически в таком случае - я пишу библиотеку, которая может бросать nongc екскпшны. Я должен в доке библиотеки сказать юзеру что он в catch должен вызывать dispose на exception (или как оно зовется в случае аллокаторов)?

Evgeny
08.02.2018
15:03:58

Igor
08.02.2018
15:04:19
ну юзер будет забывать, будет течь
проблема только в этом

Kirill
08.02.2018
15:07:44
Это не спортивно - вбросить и уйти :)

Dmitry
08.02.2018
15:08:25
https://forum.dlang.org/thread/mvhddaendngqwbmlzdei@forum.dlang.org

Evgeny
08.02.2018
15:12:49

Google

Pavel
08.02.2018
15:19:58

Evgeny
08.02.2018
15:20:27

Pavel
08.02.2018
15:22:53
Хм ну тогда, насколько я помню, ведь можно эту выделяемую память вручную добавить в писок GC
https://wiki.dlang.org/Memory_Management
// allocate memory for the object
auto memory = malloc(size)[0..size];
if(!memory)
{
import core.exception : onOutOfMemoryError;
onOutOfMemoryError();
}
writeln("Memory allocated");
// notify garbage collector that it should scan this memory
GC.addRange(memory.ptr, size);

Evgeny
08.02.2018
15:24:59
дык фишка-то в том, что GC не используется, иначе зачем все эти пляски?

Pavel
08.02.2018
15:25:53
Если он не используется библиотекой, то ничего не произойдет. А если используется в проекте с этой библиотекой, то память будет в итоге вычищена как надо.
void heapDeallocate(T)(T obj)
{
import core.stdc.stdlib : free;
import core.memory : GC;
// calls obj's destructor
destroy(obj);
// garbage collector should no longer scan this memory
GC.removeRange(cast(void*)obj);

Evgeny
08.02.2018
15:54:23

Oleg
08.02.2018
15:54:34
а накой вообще исключения выделять в куче?
сколько исключений может использоваться в единицу времени? у меня обычно только одно, не помню чтобы больше было.
статически выделить память, менять поля перед выбрасыванием

Evgeny
08.02.2018
15:55:26

Oleg
08.02.2018
15:55:45
так же nogc

Evgeny
08.02.2018
15:55:55

Pavel
08.02.2018
15:57:22
Если включен, то тогда разработчик проекта может использовать твои эксепшены как обычно и они будут нормально подищаться GC, но при этом вся библиотека nogc совместима.

Evgeny
08.02.2018
15:59:04

Pavel
08.02.2018
16:00:03
Это должно выглядет как метод самого Exception видимо
catch (Exception e) {
...
e.dispose();
}
То есть голый destroy запрещен

Igor
08.02.2018
16:02:16