Size: a a a

2020 November 04

ML

Maksim Lapshin in ErlangRus
Źmićer Rubinštejn
кажется я понимаю чем они отличаются, но вот когда я из эрланга зову нифку, какой тип у числа не понятно.

my_nif_module:simple_nif(1,2)
У тебя в эрланге все спрятано и практически неограниченно.

В c ты должен сам проверять, вписываешься ли ты в лимиты
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Maksim Lapshin
У тебя в эрланге все спрятано и практически неограниченно.

В c ты должен сам проверять, вписываешься ли ты в лимиты
Да, я понял. Как проверить что не влез И как в результате с этим работать? Типа сделать массив интов какой-то
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Или специальные либы есть для такого
источник

ИИ

Иванов Иванов... in ErlangRus
Maksim Lapshin
У тебя в эрланге все спрятано и практически неограниченно.

В c ты должен сам проверять, вписываешься ли ты в лимиты
кастинги термов (nif) выполняет кое-какие проверки и вернет 0
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Типа в жабе есть BigInt
источник

ИИ

Иванов Иванов... in ErlangRus
Źmićer Rubinštejn
Типа в жабе есть BigInt
в erlang тоже есть. а тут никак - касти к 64 да и всё. а так тебе nif функции вернут ошибку же

Returns true on success, or false if term is not an integer or is outside the bounds of type int.
источник

ML

Maksim Lapshin in ErlangRus
Źmićer Rubinštejn
Да, я понял. Как проверить что не влез И как в результате с этим работать? Типа сделать массив интов какой-то
Смотри, nif дает доступ максимум к uint64.


Если число больше, то эрланг тебе скажет, что не смог размаршалить данные и вернет ошибку.

Это значит что либо не число, либо уже сложный обьект, который bignum
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Maksim Lapshin
Смотри, nif дает доступ максимум к uint64.


Если число больше, то эрланг тебе скажет, что не смог размаршалить данные и вернет ошибку.

Это значит что либо не число, либо уже сложный обьект, который bignum
Т.е. из нифа большой инт получается никак не вернуть
источник

ML

Maksim Lapshin in ErlangRus
Nif не дает доступ к бигнуму, так что или патчи эрланг, или сам разбирай число на 63-битные части
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Ясно, спаибо
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Впринципе мне достаточно, это был филосовский вопрос
источник

ML

Maksim Lapshin in ErlangRus
Źmićer Rubinštejn
Т.е. из нифа большой инт получается никак не вернуть
Да, нельзя.

В ниф апи нет таких функций.


Еще можно написать bif. Там несложный апи, но неудобно вкомпиливать
источник

PG

Pig Greenest in ErlangRus
Неужели никому не нужны бигнумы или эрланг и так с ними достаточно быстро работает?
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Pig Greenest
Неужели никому не нужны бигнумы или эрланг и так с ними достаточно быстро работает?
Наверное не нужны
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Я про java знаю только потому, что на собесах спрашивают. В жизни чтоб я их встречал...
источник

SL

Sergey Loguntsov in ErlangRus
добря . какой сейчас кошерный способ сбора метрик из приложения ?
источник

EB

Eduard Bondarenko in ErlangRus
числа больше 64 можно вернуть как указать на массив байт + размер
и вогнать в BIGNUM от openssl
источник

ŹR

Źmićer Rubinštejn in ErlangRus
Eduard Bondarenko
числа больше 64 можно вернуть как указать на массив байт + размер
и вогнать в BIGNUM от openssl
А назад как?
источник

EB

Eduard Bondarenko in ErlangRus
так же в виде массива байт и list_to_integer
источник

EB

Eduard Bondarenko in ErlangRus
точно не самое быстрое решение, но если сильно надо
источник