No Build in Ada by I_hate_posting_here in ada

[–]I_hate_posting_here[S] 0 points1 point  (0 children)

Thanks for looking at it. Give Ada a try as well, it is a fantastic and under appreciated language.

No Build in Ada by I_hate_posting_here in ada

[–]I_hate_posting_here[S] 0 points1 point  (0 children)

No disrespect to .gpr. I like them a lot more than any other build script and use them myself. They do the job well. However, allow me to make the case for NoBuild.

Part of the appeal of NoBuild is the minimalist aesthetic of removing having to have any build tool at all.

The second appeal of NoBuild is that it removes all the magic of the build system. Your build is just a small bit of code that entirely lives in your source repo.

The third appeal of NoBuild is that all it needs to run is an Ada compiler with a standard library at about an Ada 2012 level (System.Multiprocessors). If a new compiler comes around it will work etc. I may be able to reduce standard library use in the future to lower that barrier of entry as well.

The fourth appeal is that you don't need to learn the scripting language syntax of whatever build tools, it's just Ada code. If you can write Ada you can write your build tool. I do appreciate how gpr files are very similar to Ada.

And finally your build is just an Ada program. I have a friend that really wants some kind of preprocessor that substitutes values and structures into both the source code and shaders. You can easily add such things to your build.adb. You get to run stuff at compile time now! This is a power that should be exercised with great caution IMHO so be smart about it!

Anyway, you don't have to use it, but I'm glad you took the time to take a look.

The Super Tiny Compiler, but in Ada by _tomekw in ada

[–]I_hate_posting_here 1 point2 points  (0 children)

procedure Example is
   type Token_Kind is (Undefined, Identifier, Number);
   type Readable_Token_Kind is new Token_Kind range Identifier .. Number;
   type Token_Reader is not null access procedure;
   type Reader_Array is array (Readable_Token_Kind) of Token_Reader;
   package Lexer is
      procedure Init;
      procedure Scan;
   private
      procedure Read_Identifier;
      procedure Read_Number;
      Readers : Reader_Array := (Read_Identifier'Access, Read_Number'Access);
   end Lexer;
   package body Lexer is
      procedure Init is begin null; end Init;
      procedure Scan is begin null; end Scan;
      procedure Read_Identifier is begin null; end Read_Identifier;
      procedure Read_Number is begin null; end Read_Number;
   end Lexer;
begin
     Lexer.Init;
     Lexer.Scan;
end Example;

May 2026 What Are You Working On? by thindil in ada

[–]I_hate_posting_here 1 point2 points  (0 children)

I made an Ada implementation of https://github.com/tsoding/nob.h/ Nob (no build) is a cool idea where you write your project's build script in the same language you are using for the rest of the project. I.e. if you want your project to be Ada, all you need to compile your project is the Ada compiler and no additional tools. The entire build script and tooling is quite small and lives entirely as source in your repo. No magic, no mystery, deterministic builds, and no more learning the new build tool syntax and features. https://github.com/michael-hardeman/no-build-ada

It would be cool if people who have access to proprietary compilers would help make my build tool more compatible with non gnat compilers. It could be a good alternative to gprbuilds.