Пожелание чтобы в качестве встроенного (по умолчанию) кортежа применялся стандартный тип system.valuetuple (record) вместо system.tuple (class). Это позволит уменьшить временные издержки на создания объекта кортежа (тип record размещается в стеке, а тип class создается в куче).
Вообще это скорее всего не мало сломает совместимость с C#, это разве что директивой.
Но ведь в C# нет встроенных кортежей. Какая тут может быть совместимость?
Разве? А ну ка…
Перепроверил - да, в новой версии они таки появились. Но тем не менее, как это может повлиять на совместимость?
Ну смотрите, в .dll написанной на C#:
void p1((int, int) t)
{
}
Чтоб вызвать это из паскаля - надо будет вручную писать, какой тип мы используем.
Насчёт новизны версии - я что то сомневаюсь, давно говорили о том как в C# работают кортежи, а значит ещё тогда это было.
Там мог быть именно тип кортежа(в .NET), он там с 4.0 версии.
Значит, теперь не просто вопрос эффективности, но и совместимости… Вдвойне приятно.
Ну на счет совместимости не знаю, хотя можно и идти в ногу C# (раз уж они ввели новый тип, аналогичный существующему, но не как класс (потомок system.object), а уже как тип запись (потомок system.valuetype). А вообще ещё мне хочется видеть именованные поля в кортеже. Такая возможность в новой версии С#. Я так понимаю, что такая возможность в C# реализована на уровне препроцессора. Такая возможность (поддержка именованных полей) как мне кажется сделает более удобным применение кортежей, а на текущий момент зачастую приходится стоять перед выбором: кортеж или запись, и не всегда ответ очевиден как хотелось бы. В некоторых случаях кортеж бывает удобнее, но зачастую чего-то в нем не хватает (какой-то он недоделанный что-ли).
Например, в нем может быть не более 7 полей (ограничение реализации).
У нас кортежи появились раньше чем в c#. Да, появление их кортежей сломало совместимость их с нами. Пока мы не можем понять, что с этим делать. Дело в том, что кортежи в cs не работают по моему с версии 4.6.2 и ниже. Поэтому что делать тем, у кого голый 4.0 или даже 4.6.1 - я ума не приложу
А если на ХРюше?
А зачем тогда сделали отдельный релиз Паскаля для старого .NET?
Потому что она не становится на XP
Это ограничение можно обойти - просто нужно реализовать. Четно говоря, мы не думали, что может понадобиться больше 7 полей