Release 8.4 of ParaSail Interpreter, Compiler, and Debugger [updated]

313 views
Skip to first unread message

Tuck

unread,
Nov 2, 2019, 9:33:33 PM11/2/19
to ParaSail Programming Language
[Link below fixed]
We are happy to announce a new release of ParaSail.  This new release incorporates an enhanced interactive debugger that is automatically invoked when the interpreter encounters an assertion, precondition, or postcondition that fails at run-time.  In addition, the sources for run-time library code that is potentially linked into compiled ParaSail programs now carries a license which allows such compiled programs to be distributed as the user sees fit.

In any case, here is the new release:


It is a "zip" archive of sources and binaries for Mac, Linux, and Windows.  Mac and Linux include executable binaries for a bootstrapped LLVM-generating ParaSail compiler.  Windows only contains the executable binaries for the ParaSail interpreter.

The web page for ParaSail is still:


From a documentation point of view, the most exciting news is that we have recently published a full description of the ParaSail language in the new academic "Programming Journal":


Please take a look at this article to see a comprehensive description of ParaSail, and how it fits into the world of programming language design.

Here is the latest reference manual (which is also linked from the ParaSail web page, and included in the "zip" archive for release 8.4):


Enjoy!

Conrad Steenberg

unread,
Nov 6, 2019, 10:36:56 PM11/6/19
to ParaSail Programming Language
Hi Tuck,

Thanks for the update, especially the standard library license is good news!

I updated the git mirror of the release at https://github.com/hengestone/parasail_git and made a new release.

If there are any community (or official) updates, please create a pull request or an issue.

Best,
Conrad

Tucker Taft

unread,
Nov 7, 2019, 8:16:37 AM11/7/19
to ParaSail Programming Language
Thanks, Conrad.  I'll have to check out the GitHub repository.  I did make a couple of fixes in response to comments.  When did you do your download?  The fixes were to remove the -gnat95 switch from the various *.gpr project files, and to add an "if" guard around the creation of a tags file for an "ada2020_library" which is not currently part of the release.

Take care,
-Tuck

--
You received this message because you are subscribed to the Google Groups "ParaSail Programming Language" group.
To unsubscribe from this group and stop receiving emails from it, send an email to parasail-programming...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/parasail-programming-language/c922fbed-4f7d-44e6-95b8-37f5818fa0c9%40googlegroups.com.

Conrad Steenberg

unread,
Nov 7, 2019, 1:19:37 PM11/7/19
to parasail-progr...@googlegroups.com
Hi Tuck,

The timestamp on my download is Nov 3rd, the file length is 51_424_574. Are you saying that you replaced the release file with a new one with the same name?



Tucker Taft

unread,
Nov 7, 2019, 1:38:31 PM11/7/19
to ParaSail Programming Language
Yes, I updated it (evilly) so that future downloads would not have the same installation issues that Martin mentioned.  I probably should have changed the name to 8.4.1 to clarify.  Actually, what I just did was rename it to "parasail_release_8_4_1.zip" so you can tell it is slightly different.  The same link will reach it:


Take care,
-Tuck

dpt

unread,
Nov 2, 2020, 2:58:35 PM11/2/20
to ParaSail Programming Language
Hi Tuck

Is there a new release on the way?

Regards

Tucker Taft

unread,
Nov 3, 2020, 2:55:14 PM11/3/20
to ParaSail Programming Language
Thanks for asking.  Nothing imminent.  One current focus is integrating with ZeroMQ to provide some distributed computing capability, on top of the existing parallel computing capability.  Are there any specific features you were hoping to see added or enhanced?

Thanks,
-Tuck

--
You received this message because you are subscribed to the Google Groups "ParaSail Programming Language" group.
To unsubscribe from this group and stop receiving emails from it, send an email to parasail-programming...@googlegroups.com.

dpt

unread,
Dec 5, 2020, 11:31:55 AM12/5/20
to ParaSail Programming Language
Hi Tuck

End of 2016/beginning of 2017, I asked about a "general" wildcard and a "more flexible mechanism" for pattern matching.
Have there been some improvements here?

Thanks

Tucker Taft

unread,
Dec 6, 2020, 7:57:52 AM12/6/20
to ParaSail Programming Language
On Sat, Dec 5, 2020 at 11:31 AM dpt <dpt...@arcor.de> wrote:
Hi Tuck

End of 2016/beginning of 2017, I asked about a "general" wildcard and a "more flexible mechanism" for pattern matching.
Have there been some improvements here?

No, sorry to say.  My focus has been on debugging of interpreted code, performance of compiled code, and more recently on distributed computing, where a program is spread over multiple machines with no shared memory.  Tuples remain high on the list, but alas there are so many projects! ;-)  I have cut back to 60% at my "day" job, so I keep hoping I'll find time in the other 40% to get some of these projects completed...

Thanks

Take care,
-Tuck


On Tuesday, 3 November 2020 at 20:55:14 UTC+1 Tucker Taft wrote:
Thanks for asking.  Nothing imminent.  One current focus is integrating with ZeroMQ to provide some distributed computing capability, on top of the existing parallel computing capability.  Are there any specific features you were hoping to see added or enhanced?

Thanks,
-Tuck

On Mon, Nov 2, 2020 at 2:58 PM dpt <dpt...@arcor.de> wrote:
Hi Tuck

Is there a new release on the way?

Regards

--
You received this message because you are subscribed to the Google Groups "ParaSail Programming Language" group.
To unsubscribe from this group and stop receiving emails from it, send an email to parasail-programming...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "ParaSail Programming Language" group.
To unsubscribe from this group and stop receiving emails from it, send an email to parasail-programming...@googlegroups.com.

dpt

unread,
Aug 15, 2022, 5:49:37 AM8/15/22
to ParaSail Programming Language
Hi Tuck,
is there any news about a new release?
Best Regards

Tucker Taft

unread,
Aug 24, 2022, 3:05:21 PM8/24/22
to ParaSail Programming Language
I made a partial 9.3 release in 2021:
Sorry for not promoting it more widely.

I hope to make another one this fall.

Take care,
-Tuck

On Mon, Aug 15, 2022 at 5:49 AM 'dpt' via ParaSail Programming Language <parasail-progr...@googlegroups.com> wrote:
Hi Tuck,
is there any news about a new release?
Best Regards

...

Martin Vahi

unread,
Nov 11, 2022, 3:33:53 PM11/11/22
to ParaSail Programming Language
Given that ParaSail is implemented in Ada and according to


Ada is really hard/"impossible" to bootstrap by starting from C,  then I do not see, how Ada or ParaSail could possibly survive in the long term.
On top of that there is the general problem of bootstrapping build systems. Not just gprbuild. A citation from

" gprbuild needs gprbuild to build... "

And as if that weren't enough, there's the a bit less talked potential problem that MAY BE in the future the x86/AMD64 virtual appliances, which might be used for packaging Ada/ParaSail/gprbuild/and_alike, MIGHT not be properly runnable on RISC-V or whatever else exists then. I've been looking at the various retro-computer-simulator projects with quit an interest to get an idea, what kind of problems they have for running the simulators of the old machines and so far they all have been "cheating" by running simulators of old and slow computers at "modern" CPUs, were a single core is _at_least_

    2GHz / 50MHz = 2000MHz / 50MHz = 40

times faster than the original CPU and the whole simulated computer fits into RAM, the modern CPU can use SIMD instructions and have other forms of acceleration features like out-of-order-execution, etc. I suspect that this is not going to be the case with year 2022 x86/AMD64 virtual appliances on future general purpose computers, unless the future general purpose computer has some kind of FPGA based accelerator like the MiSTer retro-console does

    (Some random intro that I found in 2 minutes,
    "MiSTer FPGA - How to build & configure, demo, cost, and pros/cons ")

As of 2022 the issues with FPGAs seems to be that the manufacturers tend to keep their documentation hidden, except one German company that received German government money for giving Europe more autonomy in the production/availability of FPGAs


but their FPGA size is roughly suitable only for a bit fancier microcontroller/MCU and as of 2022_11 costs about 10 times as much as its competitors products with similar capacity. But, it's a start and may be at some point ordinary consumers and small businesses are willing to pay about 1k€ for a CPU-simulation-accelerator that is supported by open source tools


As of 2022_11 the German company has a total global monopoly for such hardware application, because the Chinese do not bother to offer English documentation and the Americans(Xilinx/Intel-Altera, etc.) keep the specifications of their FPGAs a secret, probably to extort FPGA design software license fees from mega-corporations. Besides, in the U.S. the patent system with the software patents and all is so awful that no small company can really come up with anything really good and novel without being sued to oblivion, so may be there would not even be a market for large FPGAs other than the big corporations with big juridical departments. Between mega-corporations there's also the issue that why to show technical solutions to one's competitor's patent lawyers? Start-ups in Silicon Valley can get by by not really selling anything that much before being acquired by some mega-corporation, so they just do not expose themselves to lawsuits that much or are an unattractive or irrelevant target.

Actually, there is a solution, how to overcome the problems of U.S. patent system without totally eliminating/dismantling it. The solution is VAT-like "general patent tax", which would buy a license to all existing patents and the U.S. patent office would be responsible for redistributing it to the patent holders and for having the law-suits with the patent-holders. Patent departments of American universities would be happy, megacorporations like Intel and AMD would hate that arrangement, because it allows actual competition to the market and they can not just sue small CPU-start-ups to oblivion, the whole West would be better off during the preparation for the Chinese-West war. I actually wrote this idea to a YouTube comments section under some Washington-think-tank presentation, where the U.S. Patent Office heads were doing lobbying and expressing their "concerns" about "American innovation", but that idea got censored out, literally erased by a moderator. I never looked at any of the presentations of that think-tank after that. One of the fundamental issues with the classical patent system is that it really ignores the fact that new technologies are developed by using old technologies and new things have technology wise dependencies, which have dependencies, which have dependencies, etc. Keeping track of all of those dependencies is a major bureaucratic burden, but the "patent-tax" system would solve it by distributing all patent-tax-money of company X to everybody, who claim that the company X uses their patent covered technologies. If the U.S. patent office took 1% commission fee of that re-distribution activity, then they could really be "swimming in bonuses" in the patent office. But, for some reason, they do not want to swim in money and they sure do not care about technological advancements in America. So, Europe is the West's only chance for hardware innovation. Even the RISC-V foundation moved to Europe and the RISC-V is an absolute gemstone of the U.S. academic work.

Oh well, the summary of my current post is that FPGAs are needed for running virtual appliances and virtual appliances are needed for running badly bootstrappable software like Ada and ParaSail, unless there is some strategy change, where it is acknowledged that actual bootstrapping starts from some simpler sub-set of C language or at least from some old standard C, may be C99. Like

    C99 -> (C++ + LLVM + Ada95 + gprbuild + other_build_dependencies) -> ParaSail

Thank You for reading my post and thank You for answers(if there are some posted to it).

Tuck

unread,
Nov 14, 2022, 8:54:10 AM11/14/22
to ParaSail Programming Language
Thanks for your note. The most exciting development on the ParaSail side is that we are (finally!) in the process of creating a public GitHub site for all further ParaSail development.  The most exciting development on the Ada side is the availability of the Alire crate manager (https://alire.ada.dev) which has become the hub for open-source Ada development.  My hope is that that combination will make ParaSail easier to build, and easier to contribute to.

I guess I am unconvinced that bootstrapping starting from C is necessary these days, given the growing number of hosts and targets supported by Alire.  On the other hand, another development of interest on the AdaCore side is the development of GNAT-LLVM and GNAT-CCG, which in combination can compile most of Ada 2012 into C for portability purposes.

Take care,
-Tuck

On Friday, November 11, 2022 at 3:33:53 PM UTC-5 sininet...@gmail.com wrote:
Given that ParaSail is implemented in Ada and according to


Ada is really hard/"impossible" to bootstrap by starting from C,  then I do not see, how Ada or ParaSail could possibly survive in the long term.
On top of that there is the general problem of bootstrapping build systems. Not just gprbuild. A citation from

" gprbuild needs gprbuild to build... "
...

dpt

unread,
Dec 3, 2022, 7:33:36 PM12/3/22
to ParaSail Programming Language
Hi Tucker

How powerful is the type system of ParaSail (does it support HKT)?
And when can we expect the public github repo?

I've been a ParaSail fan for several years now. I'm glad to see that progress continues.

Best Regards
Dennis

dpt

unread,
Dec 3, 2022, 7:34:57 PM12/3/22
to ParaSail Programming Language
And is 9.3 currently the latest version?

Tucker Taft

unread,
Dec 4, 2022, 1:17:58 PM12/4/22
to parasail-progr...@googlegroups.com
On Sat, Dec 3, 2022 at 7:33 PM 'dpt' via ParaSail Programming Language <parasail-progr...@googlegroups.com> wrote:
Hi Tucker

How powerful is the type system of ParaSail (does it support HKT)?

I had to look up "HKT" ;-)  Yes, I would say ParaSail's type system does support this "hyper" parameterization.  For example:

     interface Set<Element_Type is Hashable<>> is
           func Singleton(Elem : Element_Type) -> Set;
           ...
     end interface Set;

     interface Set_Vector <Comp_Type is Set<>>  is
            //  This is a vector container specialized to contain sets as its components

            func Create(Count : Integer; Initial_Elem : Comp_Type::Element_Type)
               -> Set_Vector;
            //  This is a constructor that creates a vector of singleton sets, where
            //  each set contains the single element "Initial_Elem"
            //  The key capability is that we can refer to properties of the module parameter
            //  such as Comp_Type::Element_Type and Comp_Type::Singleton.
            ...
    end interface Set_Vector;

    class Set_Vector is
           //  Implement using standard Vector type
           var Data : Vector<Comp_Type>;
      exports
            func Create(Count : Integer; Initial_Elem : Comp_Type::Element_Type)
              -> Set_Vector is
                  //  Create vector of singleton sets
                  return (Data =>
                     Create(Length => Count,
                                 Value => Comp_Type::Singleton(Initial_Elem)));
            end func Create;
            ...
     end class Set_Vector;

And when can we expect the public github repo?

Hopefully in the next couple of weeks.  We are trying to automate the regression testing a bit further before release.


I've been a ParaSail fan for several years now. I'm glad to see that progress continues.

I hope moving to GitHub will help a lot.  As far as version number, 9.3 is the most recent "zip" archive.  Once we move to GitHub, there will be a "bleeding edge" available all of the time ... ;-)

Best Regards
Dennis

Take care,
-Tuck

On Monday, 14 November 2022 at 14:54:10 UTC+1 Tuck wrote:
Thanks for your note. The most exciting development on the ParaSail side is that we are (finally!) in the process of creating a public GitHub site for all further ParaSail development. ...

Take care,
-Tuck

...

Martin Vahi

unread,
Dec 12, 2022, 2:49:02 AM12/12/22
to ParaSail Programming Language
Tuck wrote Monday, 14. November 2022 kl 15:54:10 UTC+2:
>...
>... is that we are (finally!) in the process of creating a public GitHub site
> for all further ParaSail development.  The most exciting development
> on the Ada side is the availability of the
> Alire crate manager (https://alire.ada.dev) which has become the hub
> for open-source Ada development. My hope is that that combination will
> make ParaSail easier to build, and easier to contribute to.
>...

> I guess I am unconvinced that bootstrapping starting from C is necessary these days,
> given the growing number of hosts and targets supported by Alire.
> On the other hand, another development of interest on the AdaCore side
> is the development of GNAT-LLVM and GNAT-CCG, which in combination
> can compile most of Ada 2012 into C for portability purposes.
>...

Thank You for the answer and thank You for the references. The GNAT-LLVM as an open source option

https://github.com/AdaCore/gnat-llvm
   
is definitely something that provokes my curiosity in the context of ParaSail implementation portability. I haven't tried the Alire yet,
so I do not know the Alire, but one of the first things that came to my mind, when reading about "yet-another-package-manager" was that fundamentally each package/library, independent of programming language, has at least 2 versions/"version_numbers": interface version and implementation version.

Compiled_packages/binaries have also "compiler name" version and "compiler options version". On top of that there are the "hardware version" like x86/AMD64/ARM/whatever_else and even mohterboard chipset might cause a theoretical "hardware version" change of a binary package. Specially with Rasperrry_Pi like computers. As of 2022_12_12 I do not know, what the solution to that mess is, but I think that there might/should be at least 2 package dependency graphs: the one that uses interface versions as nodes/vertices and the one that may also contain implementation versions as nodes/vertices.

Over the years I've also came to a heretic thought that may be a "version number" of a software package, including end user applications, might be some relatively unstructured string that is never meant to be parsed or automatically interpreted. The "version number" would be more like a "version ID", a string that may contain some human readable elements like "Foo_1.0", but its just an unstructured set of characters from package management software point of view.

What regards to GitHub, then I like to clone a whole GitHub account, like

https://github.com/AdaCore/

and as of 2022_12_12 I have 2 scripts/tools for that. The scheme is:

#---------------------------------------
mkdir ./the_repository_clones
cd ./the_repository_clones
    mmmv_github_repos_2_clonescript_bash_t1.rb https://github.com/AdaCore
    # uses GitHub API to generate
    # ./clonescript.bash
    # which contains lines like
    # nice -n15 git clone --recursive https://github.com/AdaCore/gnat-docker.git
    # nice -n15 git clone --recursive https://github.com/AdaCore/gnat-gdb-scripts.git
    # nice -n15 git clone --recursive https://github.com/AdaCore/gnat-llvm.git
    # which can be outcommented with "#"
    #
    # A clonescript.bash generation demo for a different GitHub account
    # MIGHT be seen by downloading
    # wget https://github.com/martinvahi/mmmv_notes/raw/main/mmmv_notes/mmmv_utilities/src/various_Ruby_scripts/mmmv_github_repos_2_clonescript_bash_t1_rb_demo.webm
    # The demo video shows an older version of the
    # clonescript.bash generation Ruby-script, but
    # there's almost no difference between the old and new version.
    ./clonescript.bash
    cd ./../
#---------------------------------------
# The following runs
# "git pull --all --recurse-submodules --force"
# on all of the clones at the ./the_repository_clones

./pull_new_version_from_git_repository.bash ska

# but if there is a wish to run
# "git gc --aggressive --prune=all"
# on all of the clones at the ./the_repository_clones
# then

./pull_new_version_from_git_repository.bash skagc

# but the command line parameters are listed by

./pull_new_version_from_git_repository.bash help
#---------------------------------------


Different people have different preferences and my repositories
are probably quite USELESS and boring for most people, but the
2 scripts that I described here MIGHT reside at

https://github.com/martinvahi/mmmv_notes/blob/main/mmmv_notes/mmmv_utilities/src/various_Bash_scripts/pull_new_version_from_git_repository.bash
"permalink":
https://github.com/martinvahi/mmmv_notes/blob/fcb75393b315da01a34166f8e4d14cac28310dc4/mmmv_notes/mmmv_utilities/src/various_Bash_scripts/pull_new_version_from_git_repository.bash#L1

https://github.com/martinvahi/mmmv_notes/blob/main/mmmv_notes/mmmv_utilities/src/various_Ruby_scripts/mmmv_github_repos_2_clonescript_bash_t1.rb
"permalink":
https://github.com/martinvahi/mmmv_notes/blob/fcb75393b315da01a34166f8e4d14cac28310dc4/mmmv_notes/mmmv_utilities/src/various_Ruby_scripts/mmmv_github_repos_2_clonescript_bash_t1.rb#L1


I hope that my current post is more useful than spam.
Thank You for reading it and thank You for replies :-)

pull_new_version_from_git_repository.bash
mmmv_github_repos_2_clonescript_bash_t1.rb
2022_12_12_AdaCore_GitHub_account_cloning_script.bash
mmmv_github_repos_2_clonescript_bash_t1_rb_demo.webm

dpt

unread,
Jun 28, 2023, 7:00:00 AM6/28/23
to ParaSail Programming Language
Hi Tuck

Are there any new updates in 2023? Is the GitHub repo ready?

Best regards
Dennis

Tucker Taft

unread,
Jun 29, 2023, 10:46:42 AM6/29/23
to parasail-progr...@googlegroups.com
The github repo is up and running (https://github.com/parasail-lang/parasail), so a "clone" and then a "make" in the top-level directory should work.  What is still missing is an automated test procedure -- we are struggling to find time to finish it up.

Take care,
-Tuck

--
You received this message because you are subscribed to the Google Groups "ParaSail Programming Language" group.
To unsubscribe from this group and stop receiving emails from it, send an email to parasail-programming...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages