Hello @potatosalad !
It seems that a change in 1.11.11 and 1.11.12 make jose demand a minimum OTP version of 26. This is because of the use of dynamic() in the behaviour jose_json. It is only supported from OTP 26 on.
IMHO, this is fine if we introduce at least a minor version. It would ease people updating deps and would not need to fix a version in it.
Example output of compilation (OTP 24 / Elixir 1.15 / Jose 1.11.12):
==> jose
Compiling 113 files (.erl)
src/json/jose_json.erl:14:18: type dynamic() undefined
% 14| -callback encode(dynamic()) -> binary().
% | ^
src/json/jose_json_jason.erl:4:2: Warning: behaviour jose_json undefined
% 4| -behaviour(jose_json).
% | ^
src/json/jose_json_jiffy.erl:12:2: Warning: behaviour jose_json undefined
% 12| -behaviour(jose_json).
% | ^
src/json/jose_json_jsone.erl:12:2: Warning: behaviour jose_json undefined
% 12| -behaviour(jose_json).
% | ^
src/json/jose_json_jsx.erl:12:2: Warning: behaviour jose_json undefined
% 12| -behaviour(jose_json).
% | ^
src/json/jose_json_ojson.erl:12:2: Warning: behaviour jose_json undefined
% 12| -behaviour(jose_json).
% | ^
src/json/jose_json_otp.erl:30:15: type dynamic() undefined
% 30| -spec encoder(dynamic(), json:encoder()) -> iodata().
% | ^
src/json/jose_json_otp.erl:4:2: Warning: behaviour jose_json undefined
% 4| -behaviour(jose_json).
% | ^
src/json/jose_json_poison.erl:12:2: Warning: behaviour jose_json undefined
% 12| -behaviour(jose_json).
% | ^
src/json/jose_json_poison_lexical_encoder.erl:12:2: Warning: behaviour jose_json undefined
% 12| -behaviour(jose_json).
% | ^
src/json/jose_json_thoas.erl:12:2: Warning: behaviour jose_json undefined
% 12| -behaviour(jose_json).
% | ^
src/json/jose_json_unsupported.erl:12:2: Warning: behaviour jose_json undefined
% 12| -behaviour(jose_json).
% | ^
src/json/jose_json_poison_compat_encoder.erl:12:2: Warning: behaviour jose_json undefined
% 12| -behaviour(jose_json).
% | ^
could not compile dependency :jose, "mix compile" failed. Errors may have been logged above. You can recompile this dependency with "mix deps.compile jose --force", update it with "mix deps.update jose" or clean it with "mix deps.clean jose"
Thanks !
Hello @potatosalad !
It seems that a change in 1.11.11 and 1.11.12 make
josedemand a minimum OTP version of 26. This is because of the use ofdynamic()in the behaviourjose_json. It is only supported from OTP 26 on.IMHO, this is fine if we introduce at least a minor version. It would ease people updating deps and would not need to fix a version in it.
Example output of compilation (OTP 24 / Elixir 1.15 / Jose 1.11.12):
Thanks !