Live data from Hacker News

Erlang/OTP 18.0 has been released

erlang.org

21–30 of 42 posts

Re: Erlang/OTP 18.0 has been released

#21
post #11

Something you may find interesting is that the new faster maps are loosely based on Rich Hickey's HAMT implementation that is used in Clojure. Jose and co. in Elixir adapted/is-adapting their internals to use maps as well, as they were faster than any implementation they had. In addition, I wrote a full QuickCheck model for the new maps. That is, we randomly generate unit test cases for the maps and verify them. We h…

Are the quickcheck tests in the otp repo? Cannot find them, but I guess it makes some sense to leave them out since not all have the full quickcheck installed.

Re: Erlang/OTP 18.0 has been released

#22
post #11

Something you may find interesting is that the new faster maps are loosely based on Rich Hickey's HAMT implementation that is used in Clojure. Jose and co. in Elixir adapted/is-adapting their internals to use maps as well, as they were faster than any implementation they had. In addition, I wrote a full QuickCheck model for the new maps. That is, we randomly generate unit test cases for the maps and verify them. We h…

No surprise there, Rich's code is pretty solid. I really like this sort of co-operation between languages. Out of curiosity: QuickCheck is a property based test library? I know of test.check in Clojure and they mention QuickCheck as the inspiration, so I guess they re similar in this regard.

Yes. QuickCheck the original property-based test library, initially for Haskell then commercially ported by the original author to Erlang (as Quviq QuickCheck)

http://www.cse.chalmers.se/~rjmh/QuickCheck/

http://www.quviq.com/products/erlang-quickcheck/

Re: Erlang/OTP 18.0 has been released

#24
post #21
post #11

Something you may find interesting is that the new faster maps are loosely based on Rich Hickey's HAMT implementation that is used in Clojure. Jose and co. in Elixir adapted/is-adapting their internals to use maps as well, as they were faster than any implementation they had. In addition, I wrote a full QuickCheck model for the new maps. That is, we randomly generate unit test cases for the maps and verify them. We h…

Are the quickcheck tests in the otp repo? Cannot find them, but I guess it makes some sense to leave them out since not all have the full quickcheck installed.

It currently lives in its own repository:

https://github.com/jlouis/maps_eqc

There is also an accompanying series of blog posts:

https://medium.com/@jlouis666/breaking-erlang-maps-4-4ebc3c6...

(Part 4 here links to the other 3 parts in the beginning for interested readers).

Re: Erlang/OTP 18.0 has been released

#26
post #16
post #6

Earlier quoted context omitted.

How come you havent noticed?! The number! 18! Come on, Ruby is on 2, Python struggles to get to 3 and Java tries to catch poorely with 8...

Random numbers (18 vs Python's 3 or Java's 8) don't mean anything without comparing the release cycles and version numbering schemes as well. I could make small incremental updates to a toy language and release them every week to get to FooBarLang 200.0.0, that doesn't mean it's progressing faster than a language at release 2 or 10.

Hacker News is serious business

Re: Erlang/OTP 18.0 has been released

#27

Commits like this make me realize, "oh, they're just developers like me" https://github.com/erlang/otp/commit/37f143e9e16e89d753b0e5e...

See, this would not have happened if they had coded this project in a purely functional language.

It would not have happened if that logic was covered by tests :O

Re: Erlang/OTP 18.0 has been released

#28
post #13

The improved time handling is the biggest new feature for most users probably (apart form maps improvements and the new license). http://www.erlang.org/doc/apps/erts/time_correction.html

It totally makes sense that a highly concurrent system would need to start getting really nitty-gritty with time values...

Re: Erlang/OTP 18.0 has been released

#30
post #11

Something you may find interesting is that the new faster maps are loosely based on Rich Hickey's HAMT implementation that is used in Clojure. Jose and co. in Elixir adapted/is-adapting their internals to use maps as well, as they were faster than any implementation they had. In addition, I wrote a full QuickCheck model for the new maps. That is, we randomly generate unit test cases for the maps and verify them. We h…

No surprise there, Rich's code is pretty solid. I really like this sort of co-operation between languages. Out of curiosity: QuickCheck is a property based test library? I know of test.check in Clojure and they mention QuickCheck as the inspiration, so I guess they re similar in this regard.

The base is the same, but Quviq QuickCheck for Erlang provides some libraries which are far more developed than most QuickCheck implementations out there. On the other hand, it is not a free tool if you want the full version.

Since you are searching randomly, you need good heuristics that skews the distribution toward where "errors often occurs". This means errors are uncovered in fewer test cases. Also, you need good heuristics for minimizing/shrinking a known failing error. Some of the error cases shrank from 80 commands down to 5, and furthermore simplified the input so it was easier to see what stood out.

Post reply on HN