comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: RFC: Prototype for a user threading library in Ada
Date: Fri, 8 Jul 2016 10:23:53 +0200
Date: 2016-07-08T10:23:53+02:00	[thread overview]
Message-ID: <nlnnvt$d3f$1@gioia.aioe.org> (raw)
In-Reply-To: nlmpfs$b7d$1@franka.jacob-sparre.dk

On 08/07/2016 01:43, Randy Brukardt wrote:
> "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message
> news:nlloma$1vh8$1@gioia.aioe.org...
>> On 07/07/2016 03:00, Randy Brukardt wrote:
> ...
>>> Usually, compilers just don't inline in such circumstances, and no one
>>> really cares unless they happen to look at a machine code listing.
>>
>> How the compiler can predict it will run out of memory?
>
> Why would it have to?

No idea, it is a huge problem with GNAT. I am not sure if that happens 
because of inlining or because of cross-references it builds, but GNAT 
promptly runs out of 2GB memory when compiling large projects. The 
workaround I know is to reduce the number of with clauses per unit. It 
is not enough to with clauses move them to another packet "with" that 
one. The distance must be at least 2 units away. It is quite annoying.

>> Ah, but that is the point. The tasking model is not allowed to change the
>> semantics. This means that if your RTS takes the liberty to use single
>> thread for multiple tasks, then it also must convert *all* synchronous I/O
>> into asynchronous transparently to the Ada program.
>
> But of course it's impossible for the compiler to change user-written code.
> If you do a direct interface to some C API, there is no way the compiler
> could change that (nor would it be a good idea to do so).

You were talking about a virtualization layer. So theoretically it could 
be possible. But practically it is a non-starter, that is why 
user-scheduled tasks must be programmer's choice and not mere 
optimization as you suggested.

>> I know that Ada RM does not require it, but I assure you that virtually no
>> Ada user will accept anything else.
>
> That's demonstratably false, since Janus/Ada has always worked this way, and
> we've had far more than than zero customers over the years.

You didn't tell them? (:-))

> In any case, there would be no issue unless the programmer writes their own
> I/O; using anything we provide (language-defined or implementation-defined)
> would work. I'd think the vast majority of Ada programs would use Stream_IO
> compared to something of their own design. (Sockets is the big issue, since
> the language doesn't have it, but portable libraries can easily be made to
> do the right thing.)

Yes, a numeric application need none of this stuff. But new shiny things 
in Ada appear in embedded and distributed systems moving some real 
hardware. These are the areas where problems arise. And as Gnoga will 
gain its popularity the same questions will appear for fat server 
applications.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de

  reply	other threads:[~2016-07-08  8:23 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-17  9:44 RFC: Prototype for a user threading library in Ada Hadrien Grasland
2016-06-17 16:18 ` Niklas Holsti
2016-06-17 16:46   ` Dmitry A. Kazakov
2016-06-18  8:16     ` Hadrien Grasland
2016-06-18  8:47       ` Dmitry A. Kazakov
2016-06-18  9:17         ` Hadrien Grasland
2016-06-18 11:53           ` Dmitry A. Kazakov
2016-06-20  8:23             ` Hadrien Grasland
2016-06-20  9:22               ` Dmitry A. Kazakov
2016-06-23  1:42       ` Randy Brukardt
2016-06-23  8:39         ` Dmitry A. Kazakov
2016-06-23 22:12           ` Randy Brukardt
2016-06-24  7:34             ` Dmitry A. Kazakov
2016-06-24 23:00               ` Randy Brukardt
2016-06-25  7:11                 ` Dmitry A. Kazakov
2016-06-26  2:02                   ` rieachus
2016-06-26  6:26                     ` Dmitry A. Kazakov
2016-06-24  0:38           ` rieachus
2016-06-25  6:28             ` Dmitry A. Kazakov
2016-06-26  1:34               ` rieachus
2016-06-26  3:21               ` Randy Brukardt
2016-06-26  6:15                 ` Dmitry A. Kazakov
2016-06-28 20:44                   ` Anh Vo
2016-07-02  4:13                   ` Randy Brukardt
2016-07-02 10:25                     ` Dmitry A. Kazakov
2016-07-05 21:53                       ` Randy Brukardt
2016-07-06  9:25                         ` Dmitry A. Kazakov
2016-07-07  0:32                           ` Randy Brukardt
2016-07-07  6:08                             ` Niklas Holsti
2016-07-08  0:03                               ` Randy Brukardt
2016-07-08  7:32                                 ` Dmitry A. Kazakov
2016-07-11 19:40                                   ` Randy Brukardt
2016-07-12  8:37                                     ` Dmitry A. Kazakov
2016-07-12 21:31                                       ` Randy Brukardt
2016-07-08 20:17                                 ` Niklas Holsti
2016-06-24 21:06         ` Hadrien Grasland
2016-06-26  3:09           ` Randy Brukardt
2016-06-26  6:41             ` Dmitry A. Kazakov
2016-07-02  4:21               ` Randy Brukardt
2016-07-02 10:33                 ` Dmitry A. Kazakov
2016-07-05 21:24                   ` Randy Brukardt
2016-07-06 13:46                     ` Dmitry A. Kazakov
2016-07-07  1:00                       ` Randy Brukardt
2016-07-07 14:23                         ` Dmitry A. Kazakov
2016-07-07 23:43                           ` Randy Brukardt
2016-07-08  8:23                             ` Dmitry A. Kazakov [this message]
2016-07-11 19:44                               ` Randy Brukardt
2016-06-26  9:09             ` Hadrien Grasland
2016-07-02  4:36               ` Randy Brukardt
2016-07-02  5:30                 ` Simon Wright
2016-07-05 21:29                   ` Randy Brukardt
2016-07-02 11:13                 ` Hadrien Grasland
2016-07-02 13:18                   ` Dmitry A. Kazakov
2016-07-02 16:49                     ` Hadrien Grasland
2016-07-02 21:33                       ` Niklas Holsti
2016-07-03 20:56                         ` Hadrien Grasland
2016-07-02 17:26                   ` Niklas Holsti
2016-07-02 21:14                   ` Niklas Holsti
2016-07-03  7:42                     ` Hadrien Grasland
2016-07-03  8:39                       ` Dmitry A. Kazakov
2016-07-03 21:15                         ` Hadrien Grasland
2016-07-04  7:44                           ` Dmitry A. Kazakov
2016-07-05 21:38                   ` Randy Brukardt
2016-06-21  2:40     ` rieachus
2016-06-21  7:34       ` Dmitry A. Kazakov
2016-06-18  7:56   ` Hadrien Grasland
2016-06-18  8:33 ` Hadrien Grasland
2016-06-18 11:38 ` Hadrien Grasland
2016-06-18 13:17   ` Niklas Holsti
2016-06-18 16:27   ` Jeffrey R. Carter
2016-06-20  8:42 ` Hadrien Grasland
2016-07-10  0:45 ` rieachus
replies disabled

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