News for hackers. Stuff that matters.
Re:Implications of Rewriting a Browser Component in Rust by galangalalgol on Thursday February 28, 2019 @02:39PM (#19274360)
Ada is awesome, and if compiler writers had been more timely it might have taken hold. Rust solves the same problems without a runtime, and about 3 times the performance. Granted it looks like c++ and ocaml made a particularly ugly child.
Re:Implications of Rewriting a Browser Component in Rust by henrikeh on Thursday February 28, 2019 @03:07PM (#19274596)
>> [...] solves the same problems without a runtime, and about 3 times the performance.

I think you should look more into Ada. The only "runtime" is for the exception handling and bounds checking, both of which can be turned off if needed.

And I don't know where you got that "3 times" figure from? Do you have an example you are referring to?

Re:Implications of Rewriting a Browser Component in Rust by galangalalgol on Thursday February 28, 2019 @06:35PM (#19276510)
I knew you could turn off the runtime but not about the formal verification lint tools that make it safe to do so. My reference for performance is the benchmark game. If you or someone else can mod those programs to beat rust I'd be thrilled. I like Ada.
Re:Implications of Rewriting a Browser Component in Rust by pjmlp on Friday March 01, 2019 @01:10AM (#19278335)
Many planes, trains, rockets and medical devices run on Ada.

There is more to commercial compilers than winning the benchmarks game.

Re:Implications of Rewriting a Browser Component in Rust by igouy on Friday March 01, 2019 @06:42PM (#19286388)
For sure.

The benchmarks game is just an easily available source of examples.

Which, for instance, may show an Ada program with much the same measured time as a Rust program —

https://benchmarksgame-team.pages.debian.net/benchmarksgame/...

Re:Implications of Rewriting a Browser Component in Rust by Narishma on Friday March 01, 2019 @07:09AM (#19279779)
Those things don't need to be particularly fast. What they need is consistent and predictable performance and resource usage.
Re:Implications of Rewriting a Browser Component in Rust by galangalalgol on Friday March 01, 2019 @09:21AM (#19280794)
Planes trains and rockets have more sensors than ever and speed is very important.
Re:Implications of Rewriting a Browser Component in Rust by galangalalgol on Friday March 01, 2019 @09:19AM (#19280780)
Most of my experience is embedded c++ but I have written ada rust and a fair bit of jovial73. Rust is a perfect fit for those same domains. Most o the things that ran Ada in the US have now switched to c++. Do178b certified safety critical c++ is a horrible thing to develop. I'm hoping rust comes in to fix that.
Re:Implications of Rewriting a Browser Component in Rust by pjmlp on Friday March 01, 2019 @11:19AM (#19282123)
Sure, safe system programming languages should be seen as allies to the common goal of improving the quality of our IT stacks.
Re:Implications of Rewriting a Browser Component in Rust by johnisgood on Friday March 01, 2019 @09:48AM (#19281080)
I believe the performance differences on The Computer Language Benchmarks Game is largely due to the implementations themselves. For one, pidigits have been translated from Pascal to Ada using p2ada. I do not think that this is a fair comparison at all.
Re:Implications of Rewriting a Browser Component in Rust by galangalalgol on Friday March 01, 2019 @10:25AM (#19281426)
I agree on that one, I'm rusty at ada, bad pun, but someone should profile and fix it. The n body one is half the speed of rust and it is hand tweaked using simd instructions. I wouldn't mind at all goin back to Ada. Most of the people that switched to c++ did so in order to have a larger hiring pool or to seem more modern. Some of them are switching to safety critical Java now for the same reasons. I suspect safety critical python is on the horizon. If airliners have to start worrying about python 2/3 headaches I'll know it is time to retire.
Re:Implications of Rewriting a Browser Component in Rust by igouy on Friday March 01, 2019 @11:57AM (#19282652)
Re:Implications of Rewriting a Browser Component in Rust by johnisgood on Friday March 01, 2019 @10:53AM (#19281736)
Yeah, I wish we had Ada experts fixing and optimizing them. That would be neat! It matters a lot to people, and Rust versions have been optimized to oblivion by many people. It should be done with Ada, too, to have a fair comparison. :)

And yeah, it is a valid and very serious issue. If we had more Ada programmers, we would not have to sit in trains or airplanes "powered" by C++, haha.

Re:Implications of Rewriting a Browser Component in Rust by igouy on Friday March 01, 2019 @11:53AM (#19282592)
The other Ada pidigits program currently fails because output checking was made more restrictive:

https://benchmarksgame-team.pages.debian.net/benchmarksgame/...

It would be great if you would contribute a program that fixes this trivial problem:

https://salsa.debian.org/benchmarksgame-team/benchmarksgame/...

Re:Implications of Rewriting a Browser Component in Rust by johnisgood on Friday March 01, 2019 @12:11PM (#19282865)
I tested the code. It compiles and runs just fine. I compared the checksum of the output from both Rust and this version, they are identical:

md5 5b185f9a67a426baf78aa3bbb5baf8df out_rust

md5 5b185f9a67a426baf78aa3bbb5baf8df out_ada

On top of that, I got this:

Rust:

real 0m0.702s

user 0m0.693s

sys 0m0.007s

Ada:

real 0m0.708s

user 0m0.706s

sys 0m0.000s

Why don't you use this version instead? The output is correct and identical to Rust's, and the performance is significantly better: just as fast as C and Rust, as expected.

Thanks for letting us know about its existence!

Re:Implications of Rewriting a Browser Component in Rust by johnisgood on Friday March 01, 2019 @12:46PM (#19283384)
I tested it with N = 10000. I see the issue now though.

Edit: I do not understand your reaction to me thanking you for bringing my (and possibly other people's) attention to the other implementation. It was genuine.

> You're reading-between-the-lines something that isn't there.

Okay, my mistake then. :)

Re:Implications of Rewriting a Browser Component in Rust by igouy on Friday March 01, 2019 @12:48PM (#19283404)
> Thanks for letting us know about its existence!

On the benchmarks game website anything underlined is a URL.

On the faster/ada.html page there's a link "all other Ada 2012 GNAT programs & measurements".

On the performance/pidigits.html there's a link "Ada 2012 GNAT #2".

Re:Implications of Rewriting a Browser Component in Rust by johnisgood on Friday March 01, 2019 @03:39PM (#19285031)
Okay, thank you for the steps. I have to admit I completely missed it at first.
Re:Implications of Rewriting a Browser Component in Rust by igouy on Friday March 01, 2019 @12:39PM (#19283267)
> I compared the checksum

At what N?

> The output is correct

Nope. diff

    3c3
    < 6264338
    \ No newline at end of file
    ---
    > 6264338    :27

    PROGRAM OUTPUT:
    3141592653 :10
    5897932384 :20
    6264338
Re:Implications of Rewriting a Browser Component in Rust by johnisgood on Friday March 01, 2019 @02:23PM (#19284364)
Here is the code that should solve your output issue: https://slexy.org/view/s21DoMQaHF
Re:Implications of Rewriting a Browser Component in Rust by igouy on Friday March 01, 2019 @02:51PM (#19284601)
Thanks, done.
Re:Implications of Rewriting a Browser Component in Rust by johnisgood on Friday March 01, 2019 @02:59PM (#19284693)
No worries. I got rid of the unnecessary `range' in the last version, but it does not matter much anyway.
Re:Implications of Rewriting a Browser Component in Rust by igouy on Friday March 01, 2019 @03:49PM (#19285122)
My guess is that the Ada regex-redux #6 program is also easily fixable:

https://benchmarksgame-team.pages.debian.net/benchmarksgame/...

:and there's a working Ada regex-redux #5 program:

https://benchmarksgame-team.pages.debian.net/benchmarksgame/...

Re:Implications of Rewriting a Browser Component in Rust by johnisgood on Thursday February 28, 2019 @02:55PM (#19274494)
Which problems are you referring to?

You can do everything that has been mentioned without Ada's RTS, you can also disable all run-time checks. You can use static analysis tools (there are many, and available for free), for example, you can formally verify the correctness of the program, no run-time checks required.