elixir icon indicating copy to clipboard operation
elixir copied to clipboard

Support Erlang/OTP 26 new features

Open josevalim opened this issue 3 years ago • 7 comments

To be implemented and backported when Erlang 26 is released:

  • [x] Support custom_options: [sort_maps: true] for sorting maps
  • [x] Make the suite resilient to unordered maps
  • [x] Give the new shell on Windows a try and ensure that ANSI detection works out of the box
  • [x] Ensure history works

To be implemented when Erlang 26 is released:

  • [x] Ensure we properly cache code paths
  • [x] Support concurrent application boot

To be implemented when we require Erlang 26 exclusively:

  • [ ] Support min and max in guards
  • [ ] Support groups in autocomplete
  • [ ] :erlang.nodes/2
  • [ ] Allow parallel binary matching (https://github.com/erlang/otp/pull/6415)
  • [x] Remove WERL/--werl altogether (including release scripts)
  • [ ] Remove setting of ansi_enabled from bin/ scripts

Please do not send PRs for those, as it will take a while until we can effectively accept them.

josevalim avatar Jul 13 '22 15:07 josevalim

If you want to, you may want to check out the new possible return values from edlin_expand:expand/1,2 introduced in https://github.com/erlang/otp/pull/5924.

https://github.com/erlang/otp/blob/master/lib/stdlib/src/edlin_expand.erl#L41-L47

It allows the expand function to return structured data so that you can group completions. In Erlang we use it to make completions like this:

1> h<TAB>
bifs
halt(    hd(
commands
h(          hcb(        help(       history(    ht(
modules
heart:                    http_chunk:               http_request:             
http_response:            http_transport:           http_uri:                 
http_util:                httpc:                    httpc_cookie:             
httpc_handler:            httpc_handler_sup:        httpc_manager:            
httpc_profile_sup:        httpc_request:            httpc_response:           
httpc_sup:                httpd:                    httpd_acceptor:           
httpd_acceptor_sup:       httpd_cgi:                httpd_conf:               
httpd_connection_sup:     httpd_custom:             httpd_custom_api:         
httpd_esi:                httpd_example:            httpd_file:               
httpd_instance_sup:       httpd_log:                httpd_logger:             
httpd_manager:            httpd_misc_sup:           httpd_request:            
httpd_request_handler:    httpd_response:           httpd_script_env:         
httpd_socket:             httpd_sup:                httpd_util:

and like this:

1> ssl:connect(<TAB>
typespecs
ssl:connect(Host, Port, TLSOptions)
ssl:connect(Host, Port, TLSOptions, Timeout)
ssl:host() ::      {0..255, ...}      {0..65535, ...}    
string()
ssl:connect(TCPSocket, TLSOptions)
ssl:connect(TCPSocket, TLSOptions, Timeout)
ssl:socket() ::     {'$inet', ...}      port()

garazdawi avatar Sep 28 '22 07:09 garazdawi

How about :erlang.nodes/2 added in https://github.com/erlang/otp/pull/6007 and released in OTP 25.1?

lukaszsamson avatar Oct 14 '22 06:10 lukaszsamson

hello, I am finding an issue that maybe is something not yet implemented but in OTP 26 the follow code breaks

Mix.Task.get("phx.new").

I had a mix task that tries to detect if phoenix is installed by detecting the mix task above. All worked till OTP 26. but in OTP 26 it cannot find the code being loaded somehow. Any idea ? We are seeing that a lot with atom (to_existiing_atom failing in our code base and having to force loading the module before so the atom are available)

epinault avatar Nov 16 '23 17:11 epinault

Hi @epinault, please use the ElixirForum or do a complete bug report, I don't want to sidetrack the existing issues.

josevalim avatar Nov 16 '23 17:11 josevalim

done https://github.com/elixir-lang/elixir/issues/13116 (so if people find this they know where I moved the issue to)

epinault avatar Nov 16 '23 18:11 epinault