New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support Erlang 21 new features #6611

Open
josevalim opened this Issue Sep 28, 2017 · 11 comments

Comments

Projects
None yet
5 participants
@josevalim
Member

josevalim commented Sep 28, 2017

To be implemented when Erlang 21 is released (part of v1.7):

  • Support new handle_continue/2 gen_server callback
  • Support the __STACKTRACE__ variable in catch and rescue and Erlang's new try/catch clauses
  • Deprecate System.stacktrace outside of catch and rescue
  • Integrate with the new logger API (done on v1.6.6)

To be implemented when we require Erlang 21 exclusively:

  • Remove usage of error_logger
  • Move task away from proc_lib
  • Use the new compile_info compiler option to attach Elixir compiler metadata
  • Remove assert_no_null_byte from file operations and get_env/put_env (find_executable and cmd still need it)
  • Optimize elixir_erl_try.erl by removing old stacktrace logic and unifying all clauses into a single one with map_get
  • Add is_struct/1 and is_struct/2, potentially is_exception/1 and is_exception/2
@OvermindDL1

This comment has been minimized.

OvermindDL1 commented Sep 28, 2017

Use the new compile_info compiler option to attach Elixir compiler metadata

No way of doing that when building on OTP21 as it stands before it is required?

@josevalim

This comment has been minimized.

Member

josevalim commented Sep 28, 2017

We need to check the version because otherwise the data ends up in compile_info but in the wrong place (under options).

@michalmuskala

This comment has been minimized.

Member

michalmuskala commented May 2, 2018

I wonder about support for map.field in guards - this requires introducing the map_get guard to Elixir. In the past we haven't introduced new guard functions until all supported versions had them (see ceil/1 and floor/1 we still don't support because we support OTP 19).

@gerhard

This comment has been minimized.

gerhard commented May 3, 2018

Could this error be related? rabbitmq/rabbitmq-server-boshrelease@0d23f39

We're hitting it on OTP 21.0-rc1 with RabbitMQ 3.7.4 which is using Elixir 1.6.0

cc @hairyhum @michaelklishin @dumbbell

@michalmuskala

This comment has been minimized.

Member

michalmuskala commented May 3, 2018

Yes. Elixir does not support OTP 21 yet, some failures are expected.

@michalmuskala

This comment has been minimized.

Member

michalmuskala commented May 13, 2018

An additional thing is map iterators - many functions in the erlang's maps module accept either a map or a map iterator. Should we extend our Map module in the same way?

@josevalim

This comment has been minimized.

Member

josevalim commented May 13, 2018

@michalmuskala that's a good point. I think we can wait for some usage patterns to emerge before actually adding it to the language.

@michaelklishin michaelklishin referenced this issue May 30, 2018

Closed

Erlang/OTP 21 Compatibility #1616

45 of 45 tasks complete
@josevalim

This comment has been minimized.

@7Ethan

This comment has been minimized.

7Ethan commented Jul 15, 2018

When I try to run Elixir from source,an error occured after running make test:

{"init terminating in do_boot",{'cannot get bootfile','no_dot_erlang.boot'}}
init terminating in do_boot ({cannot get bootfile,no_dot_erlang.boot})

Crash dump is being written to: erl_crash.dump...done
make: *** [lib/elixir/src/elixir_parser.erl] Error 1

Erlang/OTP version:Erlang/OTP 21 [erts-10.0] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe],and OS :CentOS7.

@josevalim

This comment has been minimized.

Member

josevalim commented Jul 15, 2018

@7Ethan how have you installed Erlang? Also see this issue: #7794 (comment)

@7Ethan

This comment has been minimized.

7Ethan commented Jul 15, 2018

oh,got it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment