elixir-plug/plug 2369
A specification and conveniences for composable modules between web applications
elixir-mint/mint 1023
Functional HTTP client for Elixir with support for HTTP/1 and HTTP/2.
PostgreSQL driver for Elixir
ericmj/decimal 367
Arbitrary precision decimal arithmetic
Database connection behaviour
Data generation framework for Elixir
batate/shouldi 136
Elixir testing libraries with nested contexts, superior readability, and ease of use
Up-to-date certificate store for Elixir.
Erlware Commons is an Erlware project focused on all aspects of reusable Erlang components.
push eventelixir-lang/elixir
commit sha 8fca53ad314501e193a4ab21ec2191a0f37600ce
Ensure deprecated macros emit warnings
push time in 3 hours
push eventelixir-lang/elixir
commit sha dac03b17c214689f940864de37c2286bed87d336
Ensure deprecated macros emit warnings
push time in 3 hours
Pull request review commenterlang/otp
ssl: Fix signature algorithm selection for ECDSA
get_cert_params(Cert) -> _ -> undefined end,- {SignAlgo, Param, PublicKeyAlgo, RSAKeySize}.+ Curve = get_ec_curve(TBSCert#'OTPTBSCertificate'.subjectPublicKeyInfo),+ {SignAlgo, Param, PublicKeyAlgo, RSAKeySize, Curve}.++get_ec_curve(#'OTPSubjectPublicKeyInfo'{+ algorithm = #'PublicKeyAlgorithm'{+ algorithm = {1,2,840,10045,2,1},
Done.
comment created time in 5 hours
pull request commentelixir-lang/elixir
Fix normalization of partial keyword list elements
:green_heart: :blue_heart: :purple_heart: :yellow_heart: :heart:
comment created time in 6 hours
push eventelixir-lang/elixir
commit sha fb7179ff713c7fc9444307eb563c289a03505c1c
Fix normalization of partial keyword list elements (#11084)
push time in 6 hours
PR merged elixir-lang/elixir
The Elixir.Normalizer lets us feed any arbitrary AST to the formatter, but if the user provides a list, and an element is a 2-tuple that is not one of the last elements, and the first element is a wrapped atom with format: :keyword metadata, then the formatter will happily print it as a keyword list element, despite it being invalid syntax, for example:
iex> opts = [literal_encoder: &{:ok, {:__block__, &2, [&1]}}]
iex> {_, _, [[tuple]]} = Code.string_to_quoted("[a: b]", opts)
iex> Macro.to_string([tuple, :not_a_tuple, tuple])
"[a: b, :not_a_tuple, a: b]"
With this PR we would get the expected output:
iex> Macro.to_string([tuple, :not_a_tuple, tuple])
"[{:a, b}, :not_a_tuple, a: b]"
pr closed time in 6 hours
PR opened elixir-lang/elixir
The Elixir.Normalizer lets us feed any arbitrary AST to the formatter, but if the user provides a list, and an element is a 2-tuple that is not one of the last elements, and the first element is a wrapped atom with format: :keyword metadata, then the formatter will happily print it as a keyword list element, despite it being invalid syntax, for example:
iex> opts = [literal_encoder: &{:ok, {:__block__, &2, [&1]}}]
iex> {_, _, [[tuple]]} = Code.string_to_quoted("[a: b]", opts)
iex> Macro.to_string([tuple, :not_a_tuple, tuple])
"[a: b, :not_a_tuple, a: b]"
With this PR we would get the expected output:
iex> Macro.to_string([tuple, :not_a_tuple, tuple])
"[{:a, b}, :not_a_tuple, a: b]"
pr created time in 6 hours
pull request commenthexpm/hex_core
@ericmj Yeah that sounds fine to me. As stated, just trying to get some clarity. So what I'm hearing and off-topic from this PR, but worth aligning on now I think is that we don't any granular validations (this includes meta validations that were going to go in hex_tarball). Does that sound right?
comment created time in 6 hours
pull request commentelixir-ecto/postgrex
Fix invalid type error after failover
Maybe the same change should be done for the streaming of a prepared query?
I will review this soon but I just want to say the answer to this question is yes. :)
ok will do :)
comment created time in 7 hours
issue openederlang/otp
Cannot Call WX Copy Constructor
Describe the bug
It's impossible to call this copy constructor. The reason is that the color constructor above it matches a four element tuple (for {r, g, b, a}) and a wx_ref is also a four element tuple. Possible solutions might be to put record pattern matches above colors or to have color pattern matching check that at least their first element is a number.
To Reproduce
1> wx:new().
{wx_ref,0,wx,[]}
2> T = wxTextAttr:new().
{wx_ref,35,wxTextAttr,[]}
3> wxTextAttr:new(T).
** exception error: {{badarg,"colText"},{wxTextAttr,new,2}}
in function wxe_util:rec/1 (wxe_util.erl, line 110)
Expected behavior
It should not crash. It should return a reference to a new wxTextAttr instance.
Affected versions
OTP 24
created time in 7 hours
pull request commentelixir-ecto/postgrex
Fix invalid type error after failover
Maybe the same change should be done for the streaming of a prepared query?
I will review this soon but I just want to say the answer to this question is yes. :)
comment created time in 7 hours
issue commentkeathley/finch
Not all errors returned by request/3 are Mint.Types.error()
@lukebakken Published
comment created time in 8 hours
push eventkeathley/finch
commit sha 7fd267d490f5dba4d1b596a84e5a6cf91b187cda
Bump version
push time in 8 hours
pull request commenthexpm/hex_core
Yeah there’s tension between docs/specs and what the server allows. Good point about the downsides.
It is tangentially related but we have some validations in hex_tarball module but eventually we want to have more. I feel like there it is more appropriate given hex_tarball hopes to encapsulate whatever we’d ever need to do with tarballs. For Hex HTTP API, as far as hex_core is concerned, we only implement the client side of things and we don’t have plans to implement the server side of things anytime soon or ever. So relying on the server to do validations seems appropriate here.
I don't have strong feelings. Months and months backs we discussed doing this as a way to save trips to the server for a few reasons, and we were all in agreement then, despite the con of having to update both. That said, I'm quite ok with ripping it out.
comment created time in 8 hours
Pull request review commenthexpm/hex_core
keys_test(_Config) -> {ok, {200, _, Key}} = hex_api_key:get(?CONFIG, Name), - Permissions = [#{<<"domain">> => <<"api">>, <<"resource">> => <<"read">>}],+ Permissions = [#{domain => <<"api">>, resource => <<"read">>}],
I'd say keep atom keys IMO, the issue I ran into was atom values, not keys. Of course, having some context on why the server rejects binary values such as <<"api">> but accepts atom keys might help here.
comment created time in 8 hours
Pull request review commenthexpm/hex_core
keys_test(_Config) -> {ok, {200, _, Key}} = hex_api_key:get(?CONFIG, Name), - Permissions = [#{<<"domain">> => <<"api">>, <<"resource">> => <<"read">>}],+ Permissions = [#{domain => <<"api">>, resource => <<"read">>}], {ok, {201, _, Key2}} = hex_api_key:add(?CONFIG, Name, Permissions), #{<<"name">> := Name2} = Key2, {ok, {200, _, #{<<"name">> := Name2}}} = hex_api_key:delete(?CONFIG, Name2),++ ExpErr1 = io_lib:format("Non binary value ~p given for key ~s", [api, domain]),
Yeah, I agree. I suppose I have bias in that in rebar3_hex we would simply dump this to stdout. Other options would be :
- Return an atom, but wouldn't be very descriptive, but maybe it really doesn't have to be.
- Return a binary, still would be a little weird.
- Return a string or a binary that's not as descriptive, but doesn't end up as an io list.
comment created time in 8 hours
Pull request review commenterlef/setup-beam
+Write-Output "Installer for Elixir for Windows not available"
Yeah, the other day I was wondering why some stuff was written as Shell script vs JavaScript, myself. I think it should only be so when execution is needed in the target platform (e.g. I want to get the Elixir version from Elixir to make sure the installation process was Ok) - but most other stuff could be converted to JS... anyway, I've linked this to the newer issue, so your comments will be ported over also. Thanks for the help.
comment created time in 9 hours
PR opened elixir-ecto/postgrex
This PR fixes https://github.com/elixir-ecto/postgrex/issues/550
The change to recv_parse_describe ensures that in case the Protocol & Query's types differ, the Query gets a new ref (to trigger an update to the Ecto cache) and gets the Protocol's types (both of these are done in describe_result/4).
Todo:
- [ ] Maybe the same change should be done for the streaming of a prepared query?
pr created time in 9 hours
pull request commenterlang/otp
observer: add button to trace all processes and ports
Makes sense. I pushed a change for that.
comment created time in 10 hours
Pull request review commenterlang/otp
epp: Fix inconsistent handling of undefined pre-defined macros
scan_ifdef(Toks, IfDef, From, St) -> wait_req_skip(St, [ifdef]). scan_ifndef([{'(',_Alp},{atom,_Am,M},{')',_Arp},{dot,_Ad}], _IfnD, From, St) ->- case St#epp.macs of- #{M:=_Def} ->+ case is_macro_defined(M, St) of+ true -> skip_toks(From, St, [ifndef]);- _ ->+ false -> scan_toks(From, St#epp{istk=[ifndef|St#epp.istk]}) end; scan_ifndef([{'(',_Alp},{var,_Am,M},{')',_Arp},{dot,_Ad}], _IfnD, From, St) ->- case St#epp.macs of- #{M:=_Def} ->+ case is_macro_defined(M, St) of+ true -> skip_toks(From, St, [ifndef]);- _ ->+ false -> scan_toks(From, St#epp{istk=[ifndef|St#epp.istk]}) end; scan_ifndef(Toks, IfnDef, From, St) -> T = find_mismatch(['(',var_or_atom,')',dot], Toks, IfnDef), epp_reply(From, {error,{loc(T),epp,{bad,ifndef}}}), wait_req_skip(St, [ifndef]). +is_macro_defined(Name, #epp{macs=Macs}) ->+ case Macs of+ #{Name := undefined} -> false;
Good, so this can be resolved.
comment created time in 10 hours
issue commenterlang/otp
process waits spawn_opt/5 more than 4 hours
So far I was not able to reproduce this issue.
I think it may be explained by the fact that voluntarily I can break connection between nodes only in a predictable and conventional way. My user rights in the environment where I observed this situation are limited: I'm not able to kill docker container neither with erl process (my application) nor with istio (networking).
I tried to reproduce the issue just by killing erl process on one of cluster nodes from inside the docker container shell, but this is handled correctly, and I observed only expected behavior.
comment created time in 10 hours
pull request commentelixir-ecto/postgrex
:green_heart: :blue_heart: :purple_heart: :yellow_heart: :heart:
comment created time in 11 hours
push eventelixir-ecto/postgrex
commit sha 17e25445a06e73e9016b19695c1bb3ab4991166a
Require elixir v11+ (#554)
push time in 11 hours
PR merged elixir-ecto/postgrex
Since https://github.com/elixir-ecto/postgrex/pull/547, Postgrex requires elixir v11 or superior.
pr closed time in 11 hours
PR opened elixir-ecto/postgrex
Since https://github.com/elixir-ecto/postgrex/pull/547, Postgrex requires elixir v11 or superior.
pr created time in 11 hours
Pull request review commenterlang/otp
epp: Fix inconsistent handling of undefined pre-defined macros
scan_ifdef(Toks, IfDef, From, St) -> wait_req_skip(St, [ifdef]). scan_ifndef([{'(',_Alp},{atom,_Am,M},{')',_Arp},{dot,_Ad}], _IfnD, From, St) ->- case St#epp.macs of- #{M:=_Def} ->+ case is_macro_defined(M, St) of+ true -> skip_toks(From, St, [ifndef]);- _ ->+ false -> scan_toks(From, St#epp{istk=[ifndef|St#epp.istk]}) end; scan_ifndef([{'(',_Alp},{var,_Am,M},{')',_Arp},{dot,_Ad}], _IfnD, From, St) ->- case St#epp.macs of- #{M:=_Def} ->+ case is_macro_defined(M, St) of+ true -> skip_toks(From, St, [ifndef]);- _ ->+ false -> scan_toks(From, St#epp{istk=[ifndef|St#epp.istk]}) end; scan_ifndef(Toks, IfnDef, From, St) -> T = find_mismatch(['(',var_or_atom,')',dot], Toks, IfnDef), epp_reply(From, {error,{loc(T),epp,{bad,ifndef}}}), wait_req_skip(St, [ifndef]). +is_macro_defined(Name, #epp{macs=Macs}) ->+ case Macs of+ #{Name := undefined} -> false;
It's my understanding that defined macros are bound to {none,[Expr]} in that map, so there should be no issue.
comment created time in 11 hours
Pull request review commenterlang/otp
epp: Fix inconsistent handling of undefined pre-defined macros
scan_ifdef(Toks, IfDef, From, St) -> wait_req_skip(St, [ifdef]). scan_ifndef([{'(',_Alp},{atom,_Am,M},{')',_Arp},{dot,_Ad}], _IfnD, From, St) ->- case St#epp.macs of- #{M:=_Def} ->+ case is_macro_defined(M, St) of+ true -> skip_toks(From, St, [ifndef]);- _ ->+ false -> scan_toks(From, St#epp{istk=[ifndef|St#epp.istk]}) end; scan_ifndef([{'(',_Alp},{var,_Am,M},{')',_Arp},{dot,_Ad}], _IfnD, From, St) ->- case St#epp.macs of- #{M:=_Def} ->+ case is_macro_defined(M, St) of+ true -> skip_toks(From, St, [ifndef]);- _ ->+ false -> scan_toks(From, St#epp{istk=[ifndef|St#epp.istk]}) end; scan_ifndef(Toks, IfnDef, From, St) -> T = find_mismatch(['(',var_or_atom,')',dot], Toks, IfnDef), epp_reply(From, {error,{loc(T),epp,{bad,ifndef}}}), wait_req_skip(St, [ifndef]). +is_macro_defined(Name, #epp{macs=Macs}) ->+ case Macs of+ #{Name := undefined} -> false;
No, the value for your dummy macro would be represented as [{atom,Anno,undefined}], which is different from undefined used to mark a pre-defined macro currently without a value.
comment created time in 11 hours
push eventelixir-lang/ex_doc
commit sha 563f79ceb07754743d664adb38b6c09ce754b370
Add ExDoc.Language.autolink_doc/2 and autolink_spec/2 callbacks
commit sha 985f2eaf5e027cd71173c03b8192175d53856e42
Prepare for autolinking Erlang docs
commit sha 9df725bee8eb714a79efa7d5548f3f5664bb3cd2
walk -> walk_doc
commit sha 544b2b20c42db837b80349cbe91e646ffb39820e
Start moving code back to Autolink
commit sha 08399bf273c5005b681b04b3df2f299abd20f5e2
Initial support for autolinking Erlang docs
push time in 11 hours