From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: =?UTF-8?Q?Andreas_R=c3=b6hler?= Newsgroups: gmane.emacs.devel Subject: Re: C and Emacs Lisp code parts Date: Sat, 2 Jul 2016 08:34:43 +0200 Message-ID: <0606cae0-93b6-7e4a-c760-411326ac6970@online.de> References: <83y45lu2up.fsf@gnu.org> <54f5d80c-f20b-31aa-b438-401984fcb5b8@online.de> <874m89crw3.fsf@red-bean.com> <58c6fa18-d636-1498-8d37-b435c4ee8ec9@online.de> <83r3bdth7f.fsf@gnu.org> <06dfdf82-c469-8abe-15ab-22a96e64070b@online.de> <20160701175515.GA2618@acm.fritz.box> <20160701185704.GB2618@acm.fritz.box> <5776D31A.6050700@lanl.gov> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 8bit X-Trace: ger.gmane.org 1467441059 18785 80.91.229.3 (2 Jul 2016 06:30:59 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 2 Jul 2016 06:30:59 +0000 (UTC) Cc: Alan Mackenzie , Eli Zaretskii , =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= , emacs-devel@gnu.org To: Davis Herring Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Jul 02 08:30:43 2016 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1bJERs-0004dn-8Q for ged-emacs-devel@m.gmane.org; Sat, 02 Jul 2016 08:30:40 +0200 Original-Received: from localhost ([::1]:37132 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bJERo-0004Va-1y for ged-emacs-devel@m.gmane.org; Sat, 02 Jul 2016 02:30:36 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:40730) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bJERe-0004Fj-Fb for emacs-devel@gnu.org; Sat, 02 Jul 2016 02:30:28 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bJERa-0007ux-3P for emacs-devel@gnu.org; Sat, 02 Jul 2016 02:30:25 -0400 Original-Received: from mout.kundenserver.de ([217.72.192.75]:49649) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bJERZ-0007uY-OZ; Sat, 02 Jul 2016 02:30:22 -0400 Original-Received: from [192.168.178.35] ([95.119.62.28]) by mrelayeu.kundenserver.de (mreue101) with ESMTPSA (Nemesis) id 0M9Xn5-1bAj2s164d-00CvYy; Sat, 02 Jul 2016 08:30:01 +0200 User-Agent: Mozilla/5.0 (X11; Linux i686; rv:45.0) Gecko/20100101 Icedove/45.1.0 In-Reply-To: <5776D31A.6050700@lanl.gov> X-Provags-ID: V03:K0:RyGvx4eW5TRTE6LAD2l4rTWZDuMKzseRXoTPpzR06aHd8+4kU6R vynGwT/JnvqVFPIwSCdhSRi21G20zM/90cyRDBJ393rgQcxE/uLcjGryuwjxabnhuCs9XPl EG8rH6VbLUKV1AM5B5nkuziBHw+7ywY6AGbsy3/E1144NK1W0SR1sMK5wmTdabFSmFV0cGo mOKraDTFZ32Ih6/xxsQvA== X-UI-Out-Filterresults: notjunk:1;V01:K0:sA2RZx9fVko=:FFgqX4qCwnULd26sQyJAJ0 cMr31yQ9EnFAL1RK1kHZYJJ5t79fgXBQyzVU58rpdZPRK6dfPB2c/qCpYTfcvgYLySl5quIK1 u4IpEPlVlWF6E2Zvs7spRWWlL3CLdfshQ/wVEXyQd/ObeCc2eqNekXxl9K3qrXIelL+G03FqG K3AqAtJt2HxSoWuN98fX6MIDIIqTed+jLpGsFzLJq1ojge2L54bracciUZaUspwS0RC+mgvXx 8HUbpuNfopAqw4jd6Pd39UEVNjMHhZz2B60Ur0R3a4PzTiEOWmtnA1o7ybbwCafQqq9ZtWARE njm4rGESADhbEm6BQEhDCfirymaNiQ5d1mIhWjDDE6MJ4jVIK4XhkK5dL/A6rXniYOIpRZLmu oJaE8sL8SM5wVthDvSGbJBIlD2qVEDpjdZLrdphWV3Fixv7iwdQSZE0aNBcOseveGiaNElPZv /QAqmS46au6AnuA9OxiE00j+W535uY/AxbRDvN1H5J+0xE+su2f3ABNRfFJMcMe1IDzj0OATN gOP9kXUG+TP6xvtU63HvZWep6jt41lXRRheGVBHDVzcW8YLP+L/2nb/hLr0GJDMvXyBPf2k4z U+oDWIsr5eLMpxQks8JC/02NHiB4H40cSOtrmyu/HHYG0nOob61/PJ/QEWiJWUfs+/tb1lcmq TrQF0OJFbKTkR8yu5iaCOl4eRPs67zaCbrESi767C5ncgLT2aVWAAVsdoy2+D9xVJHGnJ3dOv wOZuB801WlUo4vPA X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 217.72.192.75 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:205071 Archived-At: On 01.07.2016 22:31, Davis Herring wrote: >> BTW think at the fate of bazaar. Here Python was at stake and for a time >> it growed quickly. Assume the easiness of Python as a factor of success. >> But finally a C-based tool won the race, while bazaar went into bigger >> and bigger issues. Why? :-) > > This has officially gotten ridiculous beyond the reach of emoticons. > > $ cd /usr/libexec/git-core > $ file * | grep text > git-add--interactive: a /usr/bin/perl -w script text executable > git-am: POSIX shell script text executable > git-bisect: POSIX shell script text executable > git-difftool: a /usr/bin/perl script text executable > git-difftool--helper: POSIX shell script text executable > git-filter-branch: POSIX shell script text executable > git-instaweb: POSIX shell script text executable > git-lost-found: POSIX shell script text executable > git-merge-octopus: POSIX shell script text executable > git-merge-one-file: POSIX shell script text executable > git-merge-resolve: POSIX shell script text executable > git-mergetool: POSIX shell script text executable > git-mergetool--lib: POSIX shell script text executable > git-parse-remote: POSIX shell script text executable > git-pull: POSIX shell script text executable > git-quiltimport: POSIX shell script text executable > git-rebase: POSIX shell script text executable > git-rebase--interactive: POSIX shell script text executable > git-relink: a /usr/bin/perl script text executable > git-repack: POSIX shell script text executable > git-request-pull: POSIX shell script text executable > git-sh-setup: POSIX shell script text executable > git-stash: POSIX shell script text executable > git-submodule: POSIX shell script text executable > git-web--browse: POSIX shell script text executable > > Git, like init (and /etc/init.d), Emacs, NumPy, and basically every > other non-trivial software system in existence, consists of a mix of > compiled and interpreted code according to the strengths and > weaknesses of each. Everyone knows this. So why you tell that? My suggestion is about re-considerating, reversing a kind of dogmatic pro-elisp policy - as I felt it. While completely agree with Clément's posts here --stressing the benefits of Lisp debugging etc.-- these strength is less important WRT lifetime of core functions. The idea is about reflecting the reasons which part to keep in C, which in Lisp. Don't have a quick answer for that. Roughly would favor to look what belongs to user-space, what not. Also stuff which is used seldom probably doesn't deserve C, etc. > > Everyone also knows that no practical benefit is to be had from the > (substantial!) effort of rewriting all the high-level code in C (or > why not hand-tuned assembler?) because of > . The numbers that govern > your life in that law are the ones that, erm, everyone has told you > need to be measured in order to make any kind of useful decisions. Amdahl is about processing power raised by number of kernels, no idea what the example should contribute here. > > Git is widely celebrated for its efficiency. Much of that comes from > the design of its (on-disk) data structures; minimizing the cost of > disk access is rather more important than the language that is used to > search them. > > Davis > Still don't understand why qualifying git "C-based" should be wrong. $ cd git $ ls abspath.c mailinfo.h aclocal.m4 mailmap.c advice.c mailmap.h advice.h Makefile alias.c match-trees.c alloc.c merge-blobs.c archive.c merge-blobs.h archive.h merge.c archive-tar.c merge-recursive.c archive-zip.c merge-recursive.h argv-array.c mergesort.c argv-array.h mergesort.h attr.c mergetools attr.h name-hash.c base85.c notes.c bisect.c notes-cache.c bisect.h notes-cache.h blob.c notes.h blob.h notes-merge.c block-sha1 notes-merge.h branch.c notes-utils.c branch.h notes-utils.h builtin object.c builtin.h object.h bulk-checkin.c pack-bitmap.c bulk-checkin.h pack-bitmap.h bundle.c pack-bitmap-write.c bundle.h pack-check.c cache.h pack.h cache-tree.c pack-objects.c cache-tree.h pack-objects.h check_bindir pack-revindex.c check-builtins.sh pack-revindex.h check-racy.c pack-write.c ci pager.c color.c parse-options.c color.h parse-options-cb.c column.c parse-options.h column.h patch-delta.c combine-diff.c patch-ids.c command-list.txt patch-ids.h commit.c path.c commit.h pathspec.c commit-slab.h pathspec.h compat perl config.c pkt-line.c config.mak.in pkt-line.h config.mak.uname po configure.ac ppc connect.c preload-index.c connected.c pretty.c connected.h prio-queue.c connect.h prio-queue.h contrib progress.c convert.c progress.h convert.h prompt.c copy.c prompt.h COPYING quote.c credential.c quote.h credential-cache.c reachable.c credential-cache--daemon.c reachable.h credential.h read-cache.c credential-store.c README.md csum-file.c ref-filter.c csum-file.h ref-filter.h ctype.c reflog-walk.c daemon.c reflog-walk.h date.c refs decorate.c refs.c decorate.h refs.h delta.h RelNotes diff.c remote.c diffcore-break.c remote-curl.c diffcore-delta.c remote.h diffcore.h remote-testsvn.c diffcore-order.c replace_object.c diffcore-pickaxe.c rerere.c diffcore-rename.c rerere.h diff-delta.c resolve-undo.c diff.h resolve-undo.h diff-lib.c revision.c diff-no-index.c revision.h dir.c run-command.c dir.h run-command.h Documentation send-pack.c editor.c send-pack.h entry.c sequencer.c environment.c sequencer.h ewah server-info.c exec_cmd.c setup.c exec_cmd.h sha1-array.c fast-import.c sha1-array.h fetch-pack.c sha1_file.c fetch-pack.h sha1-lookup.c fmt-merge-msg.h sha1-lookup.h fsck.c sha1_name.c fsck.h shallow.c generate-cmdlist.sh shell.c gettext.c sh-i18n--envsubst.c gettext.h shortlog.h git-add--interactive.perl show-index.c git-archimport.perl sideband.c git-bisect.sh sideband.h git.c sigchain.c git-compat-util.h sigchain.h git-cvsexportcommit.perl split-index.c git-cvsimport.perl split-index.h git-cvsserver.perl strbuf.c git-difftool--helper.sh strbuf.h git-difftool.perl streaming.c git-filter-branch.sh streaming.h git-gui string-list.c git-instaweb.sh string-list.h gitk-git submodule.c git-merge-octopus.sh submodule-config.c git-merge-one-file.sh submodule-config.h git-merge-resolve.sh submodule.h git-mergetool--lib.sh symlinks.c git-mergetool.sh t git-p4.py tag.c git-parse-remote.sh tag.h git-quiltimport.sh tar.h git.rc tempfile.c git-rebase--am.sh tempfile.h git-rebase--interactive.sh templates git-rebase--merge.sh thread-utils.c git-rebase.sh thread-utils.h git-relink.perl trace.c git-remote-testgit.sh trace.h git-request-pull.sh trailer.c git-send-email.perl trailer.h git-sh-i18n.sh transport.c git-sh-setup.sh transport.h git-stash.sh transport-helper.c git-submodule.sh tree.c git-svn.perl tree-diff.c GIT-VERSION-GEN tree.h gitweb tree-walk.c git-web--browse.sh tree-walk.h gpg-interface.c unicode_width.h gpg-interface.h unimplemented.sh graph.c unix-socket.c graph.h unix-socket.h grep.c unpack-trees.c grep.h unpack-trees.h hashmap.c update_unicode.sh hashmap.h upload-pack.c help.c url.c help.h url.h hex.c urlmatch.c http-backend.c urlmatch.h http.c usage.c http-fetch.c userdiff.c http.h userdiff.h http-push.c utf8.c http-walker.c utf8.h ident.c varint.c imap-send.c varint.h INSTALL vcs-svn khash.h version.c kwset.c versioncmp.c kwset.h version.h levenshtein.c walker.c levenshtein.h walker.h LGPL-2.1 wildmatch.c line-log.c wildmatch.h line-log.h worktree.c line-range.c worktree.h line-range.h wrap-for-bin.sh list-objects.c wrapper.c list-objects.h write_or_die.c ll-merge.c ws.c ll-merge.h wt-status.c lockfile.c wt-status.h lockfile.h xdiff log-tree.c xdiff-interface.c log-tree.h xdiff-interface.h mailinfo.c zlib.c $