HackerTrans
TopNewTrendsCommentsPastAskShowJobs

onox

no profile record

comments

onox
·4 yıl önce·discuss
I do not know the exact rationale of the Alire devs, but Ada already uses (since 83) the word "package" to indicate a module or namespace, so calling dependencies a "crate" seems to avoid confusion with an Ada "package".

The crates of the community index [1] are somewhat vetted because they are added to the index using a PR on GitHub. You're not required to use these external crates though, you can create your own monorepo if you want.

My personal experience has been that a package manager (for any language) makes it much easier to download and build some project.

There's a decent amount of packages in the Ada standard library, but it's not up to the level of Go's. Ada has a subset called SPARK for functional specification and static verification, so you can write, and some of the crates are actually written in SPARK.

It's quite fun to write some parts of the code in SPARK and get it to prove it with the gnatprove tool (which you can get with `alr get gnatprove` and run it on your code with `alr gnatprove`).

AdaCore also has a variant of the runtime library for embedded systems that is partially proven with SPARK [2].

[1] https://github.com/alire-project/alire-index [2] https://blog.adacore.com/proving-the-correctness-of-gnat-lig...
onox
·4 yıl önce·discuss
This website is just a community effort to modernize parts of the online resources, because many parts like the current Ada Reference Manual look like they're from the 90s.
onox
·4 yıl önce·discuss
Title page with legal info has been added!
onox
·4 yıl önce·discuss
The text at the bottom says "unless otherwise noted". The .md files for the AARM are autogenerated and it seems the legal + foreword pages are missing. These indeed need to be added. The announcement was done by an external person, but nonetheless thanks for bringing it to our attention. The website is still work in progress and is intended to be handed off to the Ada community.
onox
·4 yıl önce·discuss
Arrays in Ada start at the index based on the index type of the array. You can even use an enumeration type as the index:

    type Day is (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);
    type Hours is array (Day range <>) of Natural;

    V : Hours (Monday .. Friday);
Which index type you should use depends on the problem that you're trying to model. You can find out the lower/higher end of a type/variable with the 'First and 'Last attributes.

IIRC there's an RFC though to force the lower end of the index to a certain value like 1 or any other number/enum.
onox
·4 yıl önce·discuss
I had a similar problem last month where I needed to compute some results on multiple datasets (with a little bit of concurrency per dataset). In the end I just ported the code to Ada which makes it very easy to create task hierarchies. You can define variables of task types on the 'stack' and the program leaves the enclosing block when the variables can go out of scope after every task has finished. I can now easily put all cores to maximum use. The list comprehensions in Python became a little bit more verbose though because I had to use an older revision (2012) instead of the new 2022 revision.
onox
·4 yıl önce·discuss
In Ada you can do something similar:

    delay 0.3;
Or with package Ada.Real_Time:

    delay To_Duration (Milliseconds (300));
Or use `delay until`:

    delay until Clock + Milliseconds (300);
`delay until` is useful in loops because `delay` sleeps at least the given duration, so you get drift. (You call Clock only once and store it in a variable before the loop and then update it adding the time span each iteration)
onox
·4 yıl önce·discuss
You can use git pull with the --allow-unrelated-histories option.
onox
·4 yıl önce·discuss
Sorry, but I disagree. Maybe in the 80s when developers were all yelling while coding :p Does this look like cobol to you?

   type GUID_String is new String (1 .. 32)
     with Dynamic_Predicate => (for all C of GUID_String => C in '0' .. '9' | 'a' .. 'f');
The only thing Ada has in common with cobol is that you can define decimal fixed point types (you specify the number of digits and a delta, which must be a power of 10) [1]

I usually use ordinary fixed point types:

   type Axis_Position is delta 2.0 ** (-15) range -1.0 .. 1.0 - 2.0 ** (-15)
     with Size => 16;
or (from wayland-ada [2]):

   type Fixed is delta 2.0 ** (-8) range -(2.0 ** 23) .. +(2.0 ** 23 - 1.0)
     with Small => 2.0 ** (-8),
          Size  => Integer'Size;
[1] https://en.wikibooks.org/wiki/Ada_Programming/Types/delta#Di... [2] https://github.com/onox/wayland-ada
onox
·4 yıl önce·discuss
If you want to avoid vulnerabilities and have fun with proving that your code is functionally correct, try the Ada/SPARK interactive tutorials at [1] :)

[1] https://learn.adacore.com/courses/intro-to-spark/chapters/01...
onox
·5 yıl önce·discuss
I've been using ReScript for a few months now. So far I mostly like it, but it takes some time to get used to it. The error messages can be confusing though so I try not to depend too much on type inference. The other downside is that some bindings for some of the web apis seem to be missing (like for the types in the Dom module).

Btw, for Material UI there are already bindings [1]

[1] https://github.com/cca-io/rescript-material-ui
onox
·5 yıl önce·discuss
I'm writing a game engine [1], including a replacement for GLFW/SDL with support for gamepad rumble/motion/battery/LED (only for Wayland/Linux atm)

[1] https://github.com/onox/orka
onox
·5 yıl önce·discuss
You can just do `apt install gnat` or `pacman -S gcc-ada` for free :)
onox
·5 yıl önce·discuss
Recently I've used ReScript + esbuild for a completely webpack-free experience with just a small node_modules folder
onox
·5 yıl önce·discuss
https://web.dev/content-visibility/ has a nice blog post about "content-visibility" and "contain".
onox
·5 yıl önce·discuss
> Are you allowed to drive around in self built vehicles in Europe? Or did they convince all countries they cross to give them a special permit?

The car has been inspected by the RDW (Dutch vehicle authority) [1] and given a vehicle registration plate. So yes, they're allowed to drive around :)

[1] https://www.tue.nl/en/our-university/departments/biomedical-...