Почему в Erlang нет замены C NIF для calloc?

Почему в Erlang есть замена C NIF для malloc, enif_alloc, но не calloc? Тем самым вынуждая использовать memset() после enif_alloc для доступа к массиву.


person BAR    schedule 02.02.2013    source источник
comment
Я не очень хорошо знаю Erlang, но в C calloc() не так уж и полезен. Хорошо написанный код C, который избегает чтения элементов массива, которые он не написал, может использовать malloc(), а не calloc(). И calloc() не гарантирует, что указатели на нулевые объекты или объекты с плавающей запятой будут установлены в 0,0 (хотя это происходит в большинстве систем).   -  person Keith Thompson    schedule 03.02.2013
comment
Кейт, ты должен опубликовать это как ответ. Ответы в виде комментариев — не очень хорошая идея, поскольку это противоречит цели системы вопросов и ответов.   -  person Emil Vikström    schedule 08.02.2013
comment
Итак, вы говорите, что, поскольку хорошо написанный код на языке C будет иметь набор элементов массива, нет необходимости в calloc?   -  person BAR    schedule 08.02.2013


Ответы (1)


Ну, я предполагаю, что это связано с тем фактом (из документации):

"Файлы NIF были представлены в R13B03 в качестве экспериментальной функции".

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

Думаю, я не вижу проблемы, с которой вы столкнулись, поскольку вы всегда можете написать правильный порт с помощью calloc() и использовать старые методы маршалинга. http://www.erlang.org/doc/tutorial/erl_interface.html

Удачного программирования на C!

person ngunder    schedule 13.02.2013
comment
Поздравляю с регистрацией. У меня сложилось впечатление, что NIF будет быстрее. В моей системе я получаю накладные расходы в размере 7 долларов США за вызов одного из них. Интересно, что это будет с портом, я предполагаю, что если это системный порт, он будет близок к той же скорости. Но, по крайней мере, я все еще получаю эту грубую силу с, рожденную чистым с. - person BAR; 17.02.2013