all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Alain Schneble <a.s@realize.ch>
To: Eli Zaretskii <eliz@gnu.org>
Cc: larsi@gnus.org, emacs-devel@gnu.org
Subject: Re: Asynchronous DNS
Date: Tue, 9 Feb 2016 21:43:10 +0100	[thread overview]
Message-ID: <864mdh8vj5.fsf@realize.ch> (raw)
In-Reply-To: <83a8n9ddk5.fsf@gnu.org> (Eli Zaretskii's message of "Tue, 09 Feb 2016 19:00:10 +0200")

Eli Zaretskii <eliz@gnu.org> writes:

>> `process-send-region', `process-send-string', `process-send-eof'
>> 
>> Maybe the last three wouldn't be candidates as they throw an error even
>> in the current implementation in case the process status is still
>> 'connect, as you and I pointed out already in earlier notes.
>
> But if the wait is for the 'run' status, then it will fix those
> problems as well (as I think we should).

FWIW, I think I more and more tend to like this approach, where all
those functions would block when called before the socket is connected
-- incl. process-send-* functions that currently signal an error.

Here is a quick (dump 'my 'humble 'mind) of what I think I learned from
all of you so far in this thread and the arguments that make me feel
more and more confident about this promising path:

- We would get a very robust API that will DT(R)T, regardless of whether
  an async expert or a non-expert writes code against in.  Both may fall
  into the blocking "trap".  But those that care will certainly notice
  it.  They will be the ones that read the documentation carefully,
  where it will cover this new async subtlety -- that functions
  accepting an async network process (made with :nowait t) and called
  before its state turned to "open" may block.
  
- It will fix the inconsistency between process-send-* function and the
  others (such as set-process-coding-system), where the former today may
  signal errors while the latter do not.  Having process-send-*
  functions block will certainly only fix issues and shall not introduce
  new ones.

- Current (Lisp) API won't change at all.  No need to extend :nowait.
  Current semantics of nil and t remain.  We do not introduce any new
  idioms or configurations (e.g. that would be the case with 'immediate)
  that we might regret in the future.  It should be fully backward
  compatible.

- As it does not introduce any new concepts, it leaves the path open for
  extensions, should it turn out that a strict async programming model
  might be preferable over "the lax one" described above.  We could
  still introduce things like this:

  (make-network-process ... :nowait 'strict-async
    :sentinel
    (lambda (p s) (
      (await p)
      ...
     )))

  ...where await /must/ be called in this 'strict-async mode.  If p is
  used in a function (e.g. process-send-*) without having awaited it,
  all these functions would signal an error.  So before any usage, one
  must await for p.  If p's state is "open", then it's a no-op.  If not,
  it would block until it is.

Did I miss something?

As said, besides the last point, this really is a summary of other's
(Eli, Lars, Andreas) ideas and remarks.  Thanks you, it's so interesting
:)




  reply	other threads:[~2016-02-09 20:43 UTC|newest]

Thread overview: 190+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-23 13:50 Asynchronous DNS Lars Magne Ingebrigtsen
2016-01-23 14:56 ` Elias Mårtenson
2016-01-24 21:17   ` Lars Magne Ingebrigtsen
2016-01-25  8:58     ` Elias Mårtenson
2016-01-25 15:51       ` Eli Zaretskii
2016-01-25 17:15         ` Elias Mårtenson
2016-01-25 17:26           ` Eli Zaretskii
2016-01-23 21:42 ` Paul Eggert
2016-01-24 13:53   ` Lars Magne Ingebrigtsen
2016-01-24 14:01     ` Lars Magne Ingebrigtsen
2016-01-24 14:14       ` Lars Magne Ingebrigtsen
2016-01-24 19:58         ` Paul Eggert
2016-01-24  4:49 ` Stefan Monnier
2016-01-24 13:56   ` Lars Magne Ingebrigtsen
2016-01-24 17:16     ` Lars Magne Ingebrigtsen
2016-01-25  2:06       ` Stefan Monnier
2016-01-26 19:48 ` John Wiegley
2016-01-26 22:05 ` Florian Weimer
2016-01-30  0:11 ` Lars Ingebrigtsen
2016-01-30  2:39   ` Alex Dunn
2016-01-30  2:58     ` Lars Ingebrigtsen
2016-01-30  4:11       ` Alex Dunn
2016-01-30  4:34         ` Lars Ingebrigtsen
2016-02-01  3:55           ` Lars Ingebrigtsen
2016-01-30  7:23   ` Eli Zaretskii
2016-01-30  7:46     ` Lars Ingebrigtsen
2016-01-30  8:46       ` Eli Zaretskii
2016-01-30 22:46         ` Lars Ingebrigtsen
2016-01-31  6:12       ` Ken Raeburn
2016-02-01  2:46         ` Lars Ingebrigtsen
2016-01-31 14:03   ` Andy Moreton
2016-02-01  2:08     ` Lars Ingebrigtsen
2016-02-01  2:36       ` Lars Ingebrigtsen
2016-02-01 18:51         ` Eli Zaretskii
2016-02-02  1:15           ` Lars Ingebrigtsen
2016-02-02  3:38             ` Eli Zaretskii
2016-02-02  3:48               ` Lars Ingebrigtsen
2016-02-02 13:25                 ` Stefan Monnier
2016-02-02 16:24                   ` Eli Zaretskii
2016-02-02 17:11                     ` Stefan Monnier
2016-02-02 16:12                 ` Eli Zaretskii
2016-02-03  0:42                   ` Lars Ingebrigtsen
2016-02-03 15:49                     ` Eli Zaretskii
2016-02-04  2:22                       ` Lars Ingebrigtsen
2016-02-04  8:18                         ` Alain Schneble
2016-02-04  8:55                           ` Lars Ingebrigtsen
2016-02-04 10:13                             ` Alain Schneble
2016-02-05  2:08                               ` Lars Ingebrigtsen
2016-02-05  7:19                                 ` Eli Zaretskii
2016-02-05  7:32                                   ` Lars Ingebrigtsen
2016-02-13 23:47                                     ` Alain Schneble
2016-02-14  2:22                                       ` Lars Ingebrigtsen
2016-02-14 11:19                                         ` Alain Schneble
2016-02-14 16:40                                           ` Eli Zaretskii
2016-02-16 21:37                                             ` Alain Schneble
2016-02-20  1:28                                               ` Lars Ingebrigtsen
2016-02-20 17:55                                                 ` Paul Eggert
2016-02-20 20:18                                                   ` Alain Schneble
2016-02-20 20:33                                                     ` Paul Eggert
2016-02-21 10:29                                                       ` Alain Schneble
2016-02-26 23:54                                                         ` YAMAMOTO Mitsuharu
2016-02-27  3:57                                                           ` Lars Ingebrigtsen
2016-02-27  9:22                                                             ` Alain Schneble
2016-02-28  4:43                                                               ` Lars Ingebrigtsen
2016-02-28  9:44                                                                 ` Andreas Schwab
2016-02-29  2:59                                                                   ` Lars Ingebrigtsen
2016-02-29  3:30                                                                     ` Lars Ingebrigtsen
2016-02-29  8:41                                                                       ` Andreas Schwab
2016-02-20 19:31                                                 ` Alain Schneble
2016-02-20 19:57                                                   ` Alain Schneble
2016-02-21  2:36                                                     ` Lars Ingebrigtsen
2016-02-21  3:03                                                       ` Lars Ingebrigtsen
2016-02-21 18:55                                                         ` Alain Schneble
2016-02-21 20:23                                                           ` Eli Zaretskii
2016-02-22  2:15                                                             ` Lars Ingebrigtsen
2016-02-22  3:39                                                               ` Eli Zaretskii
2016-02-22  4:03                                                                 ` Lars Ingebrigtsen
2016-02-22  5:45                                                                   ` Lars Ingebrigtsen
2016-02-22  2:07                                                           ` Lars Ingebrigtsen
2016-02-24  6:26                                                             ` Lars Ingebrigtsen
2016-02-24  6:29                                                               ` Paul Eggert
2016-02-24  6:52                                                                 ` Lars Ingebrigtsen
2016-02-24  8:27                                                               ` John Wiegley
2016-02-21 19:35                                                         ` Alain Schneble
2016-02-22  2:01                                                           ` Lars Ingebrigtsen
2016-02-20 10:57                                               ` Eli Zaretskii
2016-02-16  2:09                                       ` Lars Ingebrigtsen
2016-02-05  9:37                                   ` Alain Schneble
2016-02-04 16:30                         ` Eli Zaretskii
2016-02-05  2:31                           ` Lars Ingebrigtsen
2016-02-05  7:20                             ` Eli Zaretskii
2016-02-03  2:49                   ` Lars Ingebrigtsen
2016-02-02  6:41             ` Alain Schneble
2016-02-02  7:06               ` Lars Ingebrigtsen
2016-02-02  7:49                 ` Alain Schneble
2016-02-02 21:27                   ` Alain Schneble
2016-02-03  0:22                   ` Lars Ingebrigtsen
2016-02-03 10:22                     ` Yuri Khan
2016-02-04  0:18                       ` Lars Ingebrigtsen
2016-02-01 11:58       ` Andy Moreton
2016-02-01 19:10         ` Eli Zaretskii
2016-02-01 22:18           ` Andy Moreton
2016-02-02  1:54         ` Lars Ingebrigtsen
2016-02-02  2:05           ` YAMAMOTO Mitsuharu
2016-02-02  2:18             ` Lars Ingebrigtsen
2016-02-02  3:42           ` Eli Zaretskii
2016-02-03  0:50             ` Lars Ingebrigtsen
2016-02-03  2:43               ` Lars Ingebrigtsen
2016-02-03 15:50               ` Eli Zaretskii
2016-02-04  2:25                 ` Lars Ingebrigtsen
2016-02-04 16:31                   ` Eli Zaretskii
2016-02-05  2:32                     ` Lars Ingebrigtsen
2016-02-05  7:21                       ` Eli Zaretskii
2016-02-05  7:33                         ` Lars Ingebrigtsen
2016-02-06  7:49                           ` Lars Ingebrigtsen
2016-02-06  8:19                             ` Eli Zaretskii
2016-02-07  0:34                               ` Alain Schneble
2016-02-07  1:38                                 ` Lars Ingebrigtsen
2016-02-07 11:41                                   ` Alain Schneble
2016-02-07 19:16                                     ` Eli Zaretskii
2016-02-07 20:24                                       ` Alain Schneble
2016-02-08  1:55                                     ` Lars Ingebrigtsen
2016-02-08  3:40                                       ` Lars Ingebrigtsen
2016-02-08  7:40                                       ` Alain Schneble
2016-02-08  7:52                                         ` Lars Ingebrigtsen
2016-02-08  8:10                                           ` Alain Schneble
2016-02-09  0:37                                             ` Lars Ingebrigtsen
2016-02-09  9:02                                               ` Alain Schneble
2016-02-09 13:46                                                 ` Lars Ingebrigtsen
2016-02-09 17:00                                                 ` Eli Zaretskii
2016-02-09 20:43                                                   ` Alain Schneble [this message]
2016-02-09 20:48                                                     ` Eli Zaretskii
2016-02-09 23:22                                                     ` Lars Ingebrigtsen
2016-02-10 10:39                                                       ` Alain Schneble
2016-02-12  2:15                                                         ` Lars Ingebrigtsen
2016-02-12 10:12                                                           ` Alain Schneble
2016-02-13  4:04                                                             ` Lars Ingebrigtsen
2016-02-13 10:16                                                               ` Alain Schneble
2016-02-14  2:20                                                                 ` Lars Ingebrigtsen
2016-02-14  5:56                                                                   ` Eli Zaretskii
2016-02-14  7:01                                                                     ` Lars Ingebrigtsen
2016-02-14 13:56                                                                       ` Stefan Monnier
2016-02-15  0:19                                                                         ` Alain Schneble
2016-02-15  4:22                                                                         ` Lars Ingebrigtsen
2016-02-14 16:32                                                                       ` Eli Zaretskii
2016-02-15  0:14                                                                         ` Alain Schneble
2016-02-15  3:41                                                                           ` Eli Zaretskii
2016-02-15  4:30                                                                             ` Lars Ingebrigtsen
2016-02-15  0:02                                                                       ` Alain Schneble
2016-02-15  4:39                                                                         ` Lars Ingebrigtsen
2016-02-15  6:14                                                                           ` Lars Ingebrigtsen
2016-02-15  6:25                                                                             ` Lars Ingebrigtsen
2016-02-15 10:55                                                                             ` Eli Zaretskii
2016-02-15 12:01                                                                               ` Andreas Schwab
2016-02-15 13:50                                                                                 ` Eli Zaretskii
2016-02-16  2:26                                                                               ` Lars Ingebrigtsen
2016-02-15 10:50                                                                           ` Eli Zaretskii
2016-02-15 11:06                                                                             ` Alain Schneble
2016-02-15 13:49                                                                               ` Eli Zaretskii
2016-02-15 15:04                                                                                 ` Alain Schneble
2016-02-15 16:40                                                                                   ` Alain Schneble
2016-02-16  2:13                                                                                     ` Lars Ingebrigtsen
2016-02-16  6:48                                                                                       ` Alain Schneble
2016-02-15 18:13                                                                           ` Alain Schneble
2016-02-12 10:35                                                           ` Andreas Schwab
2016-02-12 11:37                                                             ` Alain Schneble
2016-02-08 18:11                                           ` Eli Zaretskii
2016-02-09  0:47                                             ` Lars Ingebrigtsen
2016-02-09 16:56                                               ` Eli Zaretskii
2016-02-08 10:43                                       ` Andreas Schwab
2016-02-08 11:55                                         ` Alain Schneble
2016-02-08 12:55                                           ` Andreas Schwab
2016-02-08 14:25                                             ` Alain Schneble
2016-02-08 14:31                                               ` Andreas Schwab
2016-02-09  0:40                                                 ` Lars Ingebrigtsen
2016-02-09  9:15                                                   ` Alain Schneble
2016-02-09  9:35                                                     ` Alain Schneble
2016-02-07 15:55                                 ` Eli Zaretskii
2016-02-07 17:45                                   ` Alain Schneble
2016-02-08  2:03                                   ` Lars Ingebrigtsen
2016-02-08 15:56                                     ` John Wiegley
2016-02-08 20:30                                       ` Rasmus
2016-02-09  0:34                                       ` Lars Ingebrigtsen
2016-02-08 18:22                                     ` Eli Zaretskii
2016-02-07  1:35                               ` Lars Ingebrigtsen
2016-02-07 16:07                                 ` Eli Zaretskii
2016-02-08  2:05                                   ` Lars Ingebrigtsen
2016-02-08 18:20                                     ` Eli Zaretskii
2016-02-07 17:27                             ` John Wiegley
2016-02-08  1:26                               ` Lars Ingebrigtsen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=864mdh8vj5.fsf@realize.ch \
    --to=a.s@realize.ch \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=larsi@gnus.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.