all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Stephen J. Turnbull" <stephen@xemacs.org>
To: "Drew Adams" <drew.adams@oracle.com>
Cc: 'Chad Brown' <yandros@MIT.EDU>,
	emacs-devel@gnu.org,
	'Daniel Colascione' <daniel@censorshipresearch.org>,
	'Stefan Monnier' <monnier@iro.umontreal.ca>
Subject: RE: Obsoleting end-user-functions [was: turn-on-* type functions]
Date: Tue, 06 Apr 2010 15:41:11 +0900	[thread overview]
Message-ID: <87ochxozg8.fsf@uwakimon.sk.tsukuba.ac.jp> (raw)
In-Reply-To: <7B36874B0D264894B3D8954FC67ADADC@us.oracle.com>

Drew Adams writes:

 > > > A harder, invasive idea: get rid of explicit byte-compilation,
 > > > by default.
 > 
 > What do you mean "by default"? 

I mean that you should not ever need to run byte-compile-file in the
normal use of Emacs, even if you code a lot of Lisp.

 > > > If Emacs always byte-compiles out-of-date 
 > > > libraries at load time, the warnings would be generated.
 > 
 > If load implies byte-compile, then, again, what did you mean by "by default"?

To be precise, "load" wouldn't imply byte-compile.  It would be a
cache fetch, which would check for freshness, and if not, regenerate
the bytecode for the library.

 > When would non-compiled code be used - just by explicit eval (e.g. `C-x C-e')
 > instead of load?

I said nothing about eval.  As Daniel pointed out, some Lisps have
never had a Lisp interpreter, they always (byte-)compile.  Python (and
IIRC, Perl) use a similar strategy of executing only compiled code.

Code would be interpreted directly only when byte-compiling was
inhibited, by binding an appropriate variable (and if so, there would
presumably be a command-line flag to allow either global
interpretation or interpretation of the uncompiled user code only).

 > > I've been using byte-code-cache.el for years. It reimplements
 > > load in lisp, byte-compiling files and automatically caching the
 > > results.
 >
 > Maybe I'm misunderstanding... Are you suggesting that every load
 > would load byte-compiled code?

Unless explicitly inhibited, and maybe even that would be disallowed.

 > So to use the debugger I would need to explicitly eval stuff
 > (e.g. whole libraries)? Surely you don't mean for users to debug
 > using byte-compiled code?

Why not?  Making that transparent is why I characterized this as
"harder" (a small understatement) and "invasive".  But it's not that
hard.  Python does it fine.  You need to remember that there are
bytecodes for only a very small (< 256) number of functions, and that
variable references are by symbol, not by address.  That means that in
most cases it is fairly easy to unambiguously reconstruct the source.
Only in the case of compiled (and therefore pre-expanded) macros would
there be a problem.  But in that case it should be possible to use the
same source-level debuggers and other techniques we use today.






  reply	other threads:[~2010-04-06  6:41 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-03  1:23 turn-on-bug-reference-mode, turn-on-bug-reference-prog-mode type functions Dan Nicolaescu
2010-04-03  2:00 ` Stefan Monnier
2010-04-03 18:00 ` Richard Stallman
2010-04-03 18:17   ` Davis Herring
2010-04-03 19:43     ` Chad Brown
2010-04-04 14:26       ` Stefan Monnier
2010-04-04 16:19         ` Chad Brown
2010-04-04 18:53           ` Stefan Monnier
2010-04-05  2:29             ` Obsoleting end-user-functions [was: turn-on-* type functions] Stephen J. Turnbull
2010-04-05  3:11               ` Daniel Colascione
2010-04-05  7:19                 ` Drew Adams
2010-04-06  6:41                   ` Stephen J. Turnbull [this message]
2010-04-05 13:48               ` Obsoleting end-user-functions Stefan Monnier
2010-04-05 14:03                 ` Davis Herring
2010-04-05 15:52                 ` Chad Brown
2010-04-06  6:48                 ` Stephen J. Turnbull
2010-04-07  3:21                   ` Richard Stallman
2010-04-04 17:36       ` turn-on-bug-reference-mode, turn-on-bug-reference-prog-mode type functions Richard Stallman
2010-04-03 19:23   ` Dan Nicolaescu
2010-04-03 19:23   ` Stefan Monnier

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=87ochxozg8.fsf@uwakimon.sk.tsukuba.ac.jp \
    --to=stephen@xemacs.org \
    --cc=daniel@censorshipresearch.org \
    --cc=drew.adams@oracle.com \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    --cc=yandros@MIT.EDU \
    /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.