comp.lang.ada
 help / color / mirror / Atom feed
From: Gabriele Galeotti <gabriele.galeotti.xyz@gmail.com>
Subject: SweetAda 0.1h released
Date: Tue, 5 Jan 2021 09:37:13 -0800 (PST)	[thread overview]
Message-ID: <4114fd92-2639-409b-8092-6a2eb0ed5e72n@googlegroups.com> (raw)

Hi all.

I've just released SweetAda 0.1h.

SweetAda is lightweight development framework to create Ada systems on a wide range
of machines. Please refer to https://www.sweetada.org.

Release notes
-------------

- There is now a primitive SFP (Small-FootPrint) runtime, does nothing very interesting
  so far, only allows non-trivial exception declarations and floating-point validation;
  when I will implement the Secondary Stack, things should start to be far better

- RTS and PROFILE items are now lowercased, as well as RTS directory names

- RTS for MIPS* targets is tuned with -G0, you should use this in your target compiler
  setup

- RTS for SH* targets is tuned with -fno-leading-underscore, you should use this in
  your target compiler setup

- the Bits library unit now exposes BigEndian and LittleEndian static booleans

- new procedure Print (Interfaces.C.char) in Console library unit

- Tcl will be the default scripting language for complex tasks, it is strongly advised
  to install it in your machine (Windows users could download the tcltk.zip package)
  since script files will be gradually replaced, at least those too heavy for a shell

- as just said, the "createtxtrecord" tool in S/390 and the scripts for the creation of
  bootable PC floppy/hard disk images are now written quick-and-dirty in Tcl, but they
  should be widely usable and requires no external OS utilities support

- IDE driver sets LBA mode, and FAT (read-only) works with LBA logical sectors

- MBR library unit to recognize partitions (very minimal, only 1st partition detected)

- menu.bat now shows automatically an usage if an incorrect action was supplied

- libutils provides a createsymlink shell script to create symbolic (soft) links in
  an OS-transparent way, use it by referencing $(CREATESYMLINK) in the Makefiles; this
  substitutes a physical copy of files in non-Linux machines during subplatform-specific
  installation; however, in Windows machines it requires PowerShell elevation rights
  in order to avoid bloated warning messages, so adjust your OS settings; the good news
  are that is now possible to edit subplatform-specific files without lose your changes
  whenever you restart from scratch with a "createkernelcfg" build cycle

- Makefile cleanups, there are no scattered shell-dependent bloated constructs,
  except for the trivial ones, and they are now concentrated logically in few places;
  the build system should tolerate even spaces in pathnames (very bad practice, though)

- delete unnecessary functions and variables in Makefiles

- reordering of gnat1 debug switches in Makefile.tc.in, corrected -gnatdt switch
  description

- reordering of configuration dump in Makefile

- reordering/deletion/tuning of compiler switches in various platforms

- new target MSP432P401R, very minimal, only blinks the on-board LED

- DE10-Lite NiosII target now performs stack setup and calls the low-level adainit
  function in startup.S, so that proper runtime elaboration happens

- AVR targets can now use aggregates (see explanation below)

- ArduinoUno does not specify the path to AVRDUDE executable, this is now
  delegated to the run script

- the S/390 target specifies a correct emulation mode in linking objects so that
  there are no more problems during processing

- typos, cosmetics and minor adjustments

Quick notes
-----------

As the release notes outlined, SweetAda should run on a bare 64-bit host system which
supports, dependently on your target CPU setup, symbolic (soft) links and (optionally)
Tcl/Tk. This is normal for Linux, Windows and OS X, so no concerns should arise. If you
do not want to install the tcltk package I am providing from the SweetAda site, then
download a package from your vendor, and specify the path to the tclsh executable in
the top-level configuration.in.

The reason behind this is promptly understood: Tcl is a long-time HL language used in
industrial automation and is currently used as a scripting tool in large applications
like Xilinx Vivado, Altera Quartus and others. Also OpenOCD uses an embedded version
that drives its user interface, so it is at least adviseable to have a look, especially if
you are working with SoC, embedded softcores or you are playing with JTAG programming
on the bare metal.

To use SFP, please change settings in the top-level configuration.in:
RTS := sfp
PROFILE := sfp
USE_LIBADA := Y
Remember, you can change RTS at your will after a "make clean" or "menu.[sh|bat] clean".

Please do not rely on low-level layout of the filesystem hierarchies. When SFP runtime
will be (hopefully) working, many files could be symlinks or separate units in order to
switch between ZFP and SFPs. More precisely, low-level subprograms could start to declare
private exceptions and interrupt-related RTS units, and this will prevent the use of a ZFP
(which does NOT use anything from the compiler library, and this requires absolute care).

About aggregates in AVR targets. The problem is, aggregates could be Ada static RO objects,
and so the back-end can legitimately allocates them in the .rodata section. Historically,
.rodata section is quite often linked together with the .text, but unfortunately, AVR is an
Harvard machine with separate address spaces, and the .rodata section should stay together
with data sections in an executable image. Relocating Flash ROM .rodata in RAM during
startup obviously is a no-op. Placing .rodata in RAM prevents the read-only behaviour, though.
The ideal solutions could be to place .rodata in EEPROM, but this introduces a level of
complexity that I see of little concernment so far. So the current decision is to place
.rodata in RAM, and warn you about try to overwrite static data (it will require intimate
knowledge of dereferencing machine-code objects, furthermore, objects are nevertheless hardly
traceable, and this a very esotic, non-Ada, non-sense bad practice, so trying to do that
implies hugely problems in other areas).

Last thing, as I've updated toolchains (without change timestamps), you are encouraged to
re-download them, since exists the possibility that previous targets have problems in the
GNAT/GCC wrappers, and do not emit compilation messages of dependent units during "brief",
non-VERBOSE mode, as well as not generating Ada intermediate files nor assembler listing
thereof. If you don't care about visual outputs or assembler analysis, simply ignore this.

As usual, download the three packages core, RTS and LibGGC (since many changes are
system-wide), and please save your work before overwrite the filesystem.

Happy new year.

G

             reply	other threads:[~2021-01-05 17:37 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-05 17:37 Gabriele Galeotti [this message]
2021-01-07 17:26 ` SweetAda 0.1h released Brian Drummond
2021-01-07 18:33   ` Gabriele Galeotti
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox