GNU bug report logs - #20075
24.3; json.el functions are recursive

Previous Next

Package: emacs;

Reported by: sindikat <at> mail36.net (sindikat <at> mail36.net)

Date: Tue, 10 Mar 2015 21:36:01 UTC

Severity: wishlist

Found in version 24.3

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 20075 in the body.
You can then email your comments to 20075 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#20075; Package emacs. (Tue, 10 Mar 2015 21:36:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to sindikat <at> mail36.net (sindikat <at> mail36.net):
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Tue, 10 Mar 2015 21:36:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: sindikat <at> mail36.net (sindikat <at> mail36.net)
To: bug-gnu-emacs <at> gnu.org
Subject: 24.3; json.el functions are recursive
Date: Tue, 10 Mar 2015 21:35:19 +0000
Feature request: rewrite `json.el' so that it doesn't use recursive
functions. Emacs doesn't support TCO, therefore invoking `json.el'
functions on huge data structures results in stack overflow.

For example, I created a ridiculously huge data structure using a
function from `dash.el':

(defvar a (-iterate (lambda (x) (cons x (list (list x)))) 1 5))

Now (json-encode lol) will result in exceeding `max-lisp-eval-depth'.


In GNU Emacs 24.3.1 (x86_64-pc-linux-gnu, GTK+ Version 3.10.9)
 of 2014-06-06 on brownie, modified by Debian
Windowing system distributor `The X.Org Foundation', version 11.0.11600000
System Description:	Ubuntu 14.10

Configured using:
 `configure '--build' 'x86_64-linux-gnu' '--build' 'x86_64-linux-gnu'
 '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib'
 '--localstatedir=/var/lib' '--infodir=/usr/share/info'
 '--mandir=/usr/share/man' '--with-pop=yes'
 '--enable-locallisppath=/etc/emacs24:/etc/emacs:/usr/local/share/emacs/24.3/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.3/site-lisp:/usr/share/emacs/site-lisp'
 '--with-crt-dir=/usr/lib/x86_64-linux-gnu' '--with-x=yes'
 '--with-x-toolkit=gtk3' '--with-toolkit-scroll-bars'
 'build_alias=x86_64-linux-gnu' 'CFLAGS=-g -O2 -fstack-protector
 --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall'
 'LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro'
 'CPPFLAGS=-D_FORTIFY_SOURCE=2''

Important settings:
  value of $LC_MONETARY: kk_KZ.UTF-8
  value of $LC_NUMERIC: kk_KZ.UTF-8
  value of $LC_TIME: kk_KZ.UTF-8
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Help

Minor modes in effect:
  shell-dirtrack-mode: t
  icomplete-mode: t
  global-hl-line-mode: t
  show-paren-mode: t
  ido-everywhere: t
  keyfreq-autosave-mode: t
  keyfreq-mode: t
  global-undo-tree-mode: t
  undo-tree-mode: t
  override-global-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  column-number-mode: t
  line-number-mode: t
  global-visual-line-mode: t
  visual-line-mode: t
  transient-mark-mode: t

Recent input:
M-i M-i ) M-H <return> M-p M-N M-N M-N M-N M-n C-M-SPC 
<backspace> <backspace> SPC n i l M-H <return> 1 SPC 
( 1 ) M-h <M-backspace> <M-backspace> M-H SPC 1 SPC 
<backspace> <backspace> ( 1 SPC ( 1 ) ) SPC ( 1 SPC 
( 1 SPC ( 1 ) ) ) M-h M-SPC M-H M-x c o n s SPC ( <backspace> 
M-h ( M-H 1 SPC ( l i s t SPC 1 ) ) <return> M-p M-N 
M-N M-N M-n M-i M-i M-i ( l i s t SPC M-H ) <return> 
M-p M-h M-p M-p M-N M-N M-p M-p M-p M-p M-p M-p M-p 
M-p M-p M-N M-N M-N M-N M-n ( l i s t SPC M-I M-i M-i 
) M-H <return> M-p M-h ( l a s t SPC M-H ) <return> 
M-p M-n M-n <backspace> 1 0 0 0 M-h ( s <backspace> 
d e f v a M-s s e t q SPC l o l SPC M-H ) <return> 
M-p M-h M-I M-i M-t M-s d e f v a <backspace> <backspace> 
c o n s t SPC l o l M-H <return> ( c a r SPC l o l 
) <return> M-: ( c a r SPC l o l ) <return> ( j s o 
n - e n d <backspace> c <tab> SPC l o l ) <return> 
M-u M-u M-u M-u M-u M-u M-u M-u M-u M-u M-u M-u M-u 
M-u M-u M-u M-u M-u M-u M-u M-u M-u M-u M-u M-u M-u 
M-i M-e <help-echo> <down-mouse-1> <mouse-1> <help-echo> 
M-SPC M-H M-c M-r M-a b u <backspace> <backspace> e 
m a c - <backspace> s - b u <backspace> <backspace> 
r e p <tab> C-g C-g M-a r e p o r t <tab> <return>

Recent messages:
History item: 6
History item: 7
History item: 8
History item: 9
History item: 10
History item: 11
History item: 12
History item: 1 [3 times]
((((... ...) (...)) ((... ...))) (((... ...) (...))))
Mark set
Quit [2 times]

Load-path shadows:
~/.emacs.d/pymacs hides /home/sindikat/.emacs.d/elpa/pymacs-0.25/pymacs
/usr/share/emacs/24.3/site-lisp/debian-startup hides /usr/share/emacs/site-lisp/debian-startup
~/.emacs.d/custom hides /usr/share/emacs/24.3/lisp/custom
/home/sindikat/.emacs.d/elpa/json-1.2/json hides /usr/share/emacs/24.3/lisp/json
/usr/share/emacs24/site-lisp/dictionaries-common/ispell hides /usr/share/emacs/24.3/lisp/textmodes/ispell
/usr/share/emacs24/site-lisp/dictionaries-common/flyspell hides /usr/share/emacs/24.3/lisp/textmodes/flyspell
/home/sindikat/.emacs.d/elpa/org-20150309/ob-keys hides /usr/share/emacs/24.3/lisp/org/ob-keys
/home/sindikat/.emacs.d/elpa/org-20150309/org-capture hides /usr/share/emacs/24.3/lisp/org/org-capture
/home/sindikat/.emacs.d/elpa/org-20150309/ob-java hides /usr/share/emacs/24.3/lisp/org/ob-java
/home/sindikat/.emacs.d/elpa/org-20150309/org-w3m hides /usr/share/emacs/24.3/lisp/org/org-w3m
/home/sindikat/.emacs.d/elpa/org-20150309/ob-exp hides /usr/share/emacs/24.3/lisp/org/ob-exp
/home/sindikat/.emacs.d/elpa/org-20150309/org-entities hides /usr/share/emacs/24.3/lisp/org/org-entities
/home/sindikat/.emacs.d/elpa/org-20150309/org-timer hides /usr/share/emacs/24.3/lisp/org/org-timer
/home/sindikat/.emacs.d/elpa/org-20150309/ob-haskell hides /usr/share/emacs/24.3/lisp/org/ob-haskell
/home/sindikat/.emacs.d/elpa/org-20150309/org-clock hides /usr/share/emacs/24.3/lisp/org/org-clock
/home/sindikat/.emacs.d/elpa/org-20150309/ob-scheme hides /usr/share/emacs/24.3/lisp/org/ob-scheme
/home/sindikat/.emacs.d/elpa/org-20150309/org-list hides /usr/share/emacs/24.3/lisp/org/org-list
/home/sindikat/.emacs.d/elpa/org-20150309/org-eshell hides /usr/share/emacs/24.3/lisp/org/org-eshell
/home/sindikat/.emacs.d/elpa/org-20150309/ob-awk hides /usr/share/emacs/24.3/lisp/org/ob-awk
/home/sindikat/.emacs.d/elpa/org-20150309/ob-sh hides /usr/share/emacs/24.3/lisp/org/ob-sh
/home/sindikat/.emacs.d/elpa/org-20150309/ob-ocaml hides /usr/share/emacs/24.3/lisp/org/ob-ocaml
/home/sindikat/.emacs.d/elpa/org-20150309/ob-fortran hides /usr/share/emacs/24.3/lisp/org/ob-fortran
/home/sindikat/.emacs.d/elpa/org-20150309/org-gnus hides /usr/share/emacs/24.3/lisp/org/org-gnus
/home/sindikat/.emacs.d/elpa/org-20150309/org-inlinetask hides /usr/share/emacs/24.3/lisp/org/org-inlinetask
/home/sindikat/.emacs.d/elpa/org-20150309/ob-lob hides /usr/share/emacs/24.3/lisp/org/ob-lob
/home/sindikat/.emacs.d/elpa/org-20150309/org-mouse hides /usr/share/emacs/24.3/lisp/org/org-mouse
/home/sindikat/.emacs.d/elpa/org-20150309/ob-lilypond hides /usr/share/emacs/24.3/lisp/org/ob-lilypond
/home/sindikat/.emacs.d/elpa/org-20150309/ob-dot hides /usr/share/emacs/24.3/lisp/org/ob-dot
/home/sindikat/.emacs.d/elpa/org-20150309/org-irc hides /usr/share/emacs/24.3/lisp/org/org-irc
/home/sindikat/.emacs.d/elpa/org-20150309/org-feed hides /usr/share/emacs/24.3/lisp/org/org-feed
/home/sindikat/.emacs.d/elpa/org-20150309/org-footnote hides /usr/share/emacs/24.3/lisp/org/org-footnote
/home/sindikat/.emacs.d/elpa/org-20150309/ob-org hides /usr/share/emacs/24.3/lisp/org/ob-org
/home/sindikat/.emacs.d/elpa/org-20150309/org-bibtex hides /usr/share/emacs/24.3/lisp/org/org-bibtex
/home/sindikat/.emacs.d/elpa/org-20150309/ob-scala hides /usr/share/emacs/24.3/lisp/org/ob-scala
/home/sindikat/.emacs.d/elpa/org-20150309/org-datetree hides /usr/share/emacs/24.3/lisp/org/org-datetree
/home/sindikat/.emacs.d/elpa/org-20150309/org-version hides /usr/share/emacs/24.3/lisp/org/org-version
/home/sindikat/.emacs.d/elpa/org-20150309/ob-clojure hides /usr/share/emacs/24.3/lisp/org/ob-clojure
/home/sindikat/.emacs.d/elpa/org-20150309/ob-sql hides /usr/share/emacs/24.3/lisp/org/ob-sql
/home/sindikat/.emacs.d/elpa/org-20150309/ob-table hides /usr/share/emacs/24.3/lisp/org/ob-table
/home/sindikat/.emacs.d/elpa/org-20150309/org-habit hides /usr/share/emacs/24.3/lisp/org/org-habit
/home/sindikat/.emacs.d/elpa/org-20150309/ob-sass hides /usr/share/emacs/24.3/lisp/org/ob-sass
/home/sindikat/.emacs.d/elpa/org-20150309/ob-tangle hides /usr/share/emacs/24.3/lisp/org/ob-tangle
/home/sindikat/.emacs.d/elpa/org-20150309/ob-maxima hides /usr/share/emacs/24.3/lisp/org/ob-maxima
/home/sindikat/.emacs.d/elpa/org-20150309/ob-lisp hides /usr/share/emacs/24.3/lisp/org/ob-lisp
/home/sindikat/.emacs.d/elpa/org-20150309/org-agenda hides /usr/share/emacs/24.3/lisp/org/org-agenda
/home/sindikat/.emacs.d/elpa/org-20150309/org-ctags hides /usr/share/emacs/24.3/lisp/org/org-ctags
/home/sindikat/.emacs.d/elpa/org-20150309/ob-picolisp hides /usr/share/emacs/24.3/lisp/org/ob-picolisp
/home/sindikat/.emacs.d/elpa/org-20150309/ob-ditaa hides /usr/share/emacs/24.3/lisp/org/ob-ditaa
/home/sindikat/.emacs.d/elpa/org-20150309/ob-ref hides /usr/share/emacs/24.3/lisp/org/ob-ref
/home/sindikat/.emacs.d/elpa/org-20150309/org-attach hides /usr/share/emacs/24.3/lisp/org/org-attach
/home/sindikat/.emacs.d/elpa/org-20150309/org-archive hides /usr/share/emacs/24.3/lisp/org/org-archive
/home/sindikat/.emacs.d/elpa/org-20150309/ob-asymptote hides /usr/share/emacs/24.3/lisp/org/ob-asymptote
/home/sindikat/.emacs.d/elpa/org-20150309/ob-js hides /usr/share/emacs/24.3/lisp/org/ob-js
/home/sindikat/.emacs.d/elpa/org-20150309/org-docview hides /usr/share/emacs/24.3/lisp/org/org-docview
/home/sindikat/.emacs.d/elpa/org-20150309/ob-python hides /usr/share/emacs/24.3/lisp/org/ob-python
/home/sindikat/.emacs.d/elpa/org-20150309/ob-ruby hides /usr/share/emacs/24.3/lisp/org/ob-ruby
/home/sindikat/.emacs.d/elpa/org-20150309/ob hides /usr/share/emacs/24.3/lisp/org/ob
/home/sindikat/.emacs.d/elpa/org-20150309/org-colview hides /usr/share/emacs/24.3/lisp/org/org-colview
/home/sindikat/.emacs.d/elpa/org-20150309/ob-css hides /usr/share/emacs/24.3/lisp/org/ob-css
/home/sindikat/.emacs.d/elpa/org-20150309/ob-calc hides /usr/share/emacs/24.3/lisp/org/ob-calc
/home/sindikat/.emacs.d/elpa/org-20150309/org-compat hides /usr/share/emacs/24.3/lisp/org/org-compat
/home/sindikat/.emacs.d/elpa/org-20150309/ob-matlab hides /usr/share/emacs/24.3/lisp/org/ob-matlab
/home/sindikat/.emacs.d/elpa/org-20150309/ob-eval hides /usr/share/emacs/24.3/lisp/org/ob-eval
/home/sindikat/.emacs.d/elpa/org-20150309/ob-emacs-lisp hides /usr/share/emacs/24.3/lisp/org/ob-emacs-lisp
/home/sindikat/.emacs.d/elpa/org-20150309/ob-mscgen hides /usr/share/emacs/24.3/lisp/org/ob-mscgen
/home/sindikat/.emacs.d/elpa/org-20150309/org-crypt hides /usr/share/emacs/24.3/lisp/org/org-crypt
/home/sindikat/.emacs.d/elpa/org-20150309/ob-screen hides /usr/share/emacs/24.3/lisp/org/ob-screen
/home/sindikat/.emacs.d/elpa/org-20150309/ob-ledger hides /usr/share/emacs/24.3/lisp/org/ob-ledger
/home/sindikat/.emacs.d/elpa/org-20150309/org-loaddefs hides /usr/share/emacs/24.3/lisp/org/org-loaddefs
/home/sindikat/.emacs.d/elpa/org-20150309/org-bbdb hides /usr/share/emacs/24.3/lisp/org/org-bbdb
/home/sindikat/.emacs.d/elpa/org-20150309/org-macs hides /usr/share/emacs/24.3/lisp/org/org-macs
/home/sindikat/.emacs.d/elpa/org-20150309/org-install hides /usr/share/emacs/24.3/lisp/org/org-install
/home/sindikat/.emacs.d/elpa/org-20150309/org-rmail hides /usr/share/emacs/24.3/lisp/org/org-rmail
/home/sindikat/.emacs.d/elpa/org-20150309/ob-plantuml hides /usr/share/emacs/24.3/lisp/org/ob-plantuml
/home/sindikat/.emacs.d/elpa/org-20150309/ob-sqlite hides /usr/share/emacs/24.3/lisp/org/ob-sqlite
/home/sindikat/.emacs.d/elpa/org-20150309/org hides /usr/share/emacs/24.3/lisp/org/org
/home/sindikat/.emacs.d/elpa/org-20150309/ob-shen hides /usr/share/emacs/24.3/lisp/org/ob-shen
/home/sindikat/.emacs.d/elpa/org-20150309/ob-R hides /usr/share/emacs/24.3/lisp/org/ob-R
/home/sindikat/.emacs.d/elpa/org-20150309/org-element hides /usr/share/emacs/24.3/lisp/org/org-element
/home/sindikat/.emacs.d/elpa/org-20150309/org-mobile hides /usr/share/emacs/24.3/lisp/org/org-mobile
/home/sindikat/.emacs.d/elpa/org-20150309/ob-gnuplot hides /usr/share/emacs/24.3/lisp/org/ob-gnuplot
/home/sindikat/.emacs.d/elpa/org-20150309/org-src hides /usr/share/emacs/24.3/lisp/org/org-src
/home/sindikat/.emacs.d/elpa/org-20150309/org-table hides /usr/share/emacs/24.3/lisp/org/org-table
/home/sindikat/.emacs.d/elpa/org-20150309/org-mhe hides /usr/share/emacs/24.3/lisp/org/org-mhe
/home/sindikat/.emacs.d/elpa/org-20150309/ob-io hides /usr/share/emacs/24.3/lisp/org/ob-io
/home/sindikat/.emacs.d/elpa/org-20150309/org-faces hides /usr/share/emacs/24.3/lisp/org/org-faces
/home/sindikat/.emacs.d/elpa/org-20150309/ob-perl hides /usr/share/emacs/24.3/lisp/org/ob-perl
/home/sindikat/.emacs.d/elpa/org-20150309/ob-C hides /usr/share/emacs/24.3/lisp/org/ob-C
/home/sindikat/.emacs.d/elpa/org-20150309/ob-octave hides /usr/share/emacs/24.3/lisp/org/ob-octave
/home/sindikat/.emacs.d/elpa/org-20150309/ob-comint hides /usr/share/emacs/24.3/lisp/org/ob-comint
/home/sindikat/.emacs.d/elpa/org-20150309/org-protocol hides /usr/share/emacs/24.3/lisp/org/org-protocol
/home/sindikat/.emacs.d/elpa/org-20150309/org-info hides /usr/share/emacs/24.3/lisp/org/org-info
/home/sindikat/.emacs.d/elpa/org-20150309/org-plot hides /usr/share/emacs/24.3/lisp/org/org-plot
/home/sindikat/.emacs.d/elpa/org-20150309/ob-latex hides /usr/share/emacs/24.3/lisp/org/ob-latex
/home/sindikat/.emacs.d/elpa/org-20150309/org-pcomplete hides /usr/share/emacs/24.3/lisp/org/org-pcomplete
/home/sindikat/.emacs.d/elpa/org-20150309/org-id hides /usr/share/emacs/24.3/lisp/org/org-id
/home/sindikat/.emacs.d/elpa/org-20150309/org-indent hides /usr/share/emacs/24.3/lisp/org/org-indent
~/.emacs.d/secrets hides /usr/share/emacs/24.3/lisp/net/secrets

Features:
(shadow sort mail-extr emacsbug js imenu cc-mode cc-fonts cc-guess
cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs shell
misearch multi-isearch thingatpt face-remap org-w3m org-wl org-vm
org-rmail org-mhe org-mew org-irc org-jsinfo org-infojs org-html org-exp
org-exp-blocks org-info org-gnus org-docview doc-view jka-compr
image-mode dired org-bibtex bibtex org-bbdb bookmark org-element debug
json help-mode ielm pp gnutls network-stream starttls tls pop3 nndraft
nnmh nnfolder nnml gnus-agent gnus-srvr gnus-score score-mode nnvirtual
gnus-msg gnus-art mm-uu mml2015 epg-config mm-view mml-smime smime dig
mailcap nntp gnus-cache gnus-sum nnoo gnus-group gnus-undo nnmail
mail-source gnus-start gnus-spec gnus-int gnus-range message rfc822 mml
mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader gnus-win gnus gnus-ems nnheader wid-edit server
eldoc flyspell ispell icomplete hl-line paren ido keyfreq uniquify
warnings advice help-fns advice-preload cl-macs gv cl-lib org-id
org-mobile org-agenda org org-macro org-footnote org-pcomplete pcomplete
org-list org-faces org-entities noutline outline org-version ob-scheme
geiser ob-emacs-lisp ob ob-tangle ob-ref ob-lob ob-table ob-exp org-src
ob-keys ob-comint comint ansi-color ring ob-core ob-eval org-compat
org-macs org-loaddefs format-spec find-func cal-menu calendar
cal-loaddefs smtpmail auth-source eieio byte-opt bytecomp byte-compile
cconv gnus-util time-date password-cache sendmail rfc2047 rfc2045
ietf-drums mm-util mail-prsvr mail-utils wombat-theme undo-tree diff
suspend app f s ucs-normalize dash-functional dash moderne-mode bind-key
easy-mmode color-theme-autoloads dash-functional-autoloads
ergoemacs-mode-autoloads f-autoloads dash-autoloads geiser-autoloads
ghc-autoloads ghci-completion-autoloads graphviz-dot-mode-autoloads
haskell-mode-autoloads edmacro kmacro ht-autoloads json-autoloads
markdown-mode-autoloads monokai-theme-autoloads org-autoloads
pymacs-autoloads request-autoloads rust-mode-autoloads s-autoloads
slime-autoloads info easymenu ttl-mode-autoloads undo-tree-autoloads
unidecode-autoloads finder-inf use-package-autoloads diminish-autoloads
bind-key-autoloads package tooltip ediff-hook vc-hooks lisp-float-type
mwheel x-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list newcomment lisp-mode register page menu-bar rfn-eshadow
timer select scroll-bar mouse jit-lock font-lock syntax facemenu
font-core frame cham georgian utf-8-lang misc-lang vietnamese tibetan
thai tai-viet lao korean japanese hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese case-table epa-hook
jka-cmpr-hook help simple abbrev minibuffer loaddefs button faces
cus-face macroexp files text-properties overlay sha1 md5 base64 format
env code-pages mule custom widget hashtable-print-readable backquote
make-network-process dbusbind dynamic-setting system-font-setting
font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs)




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#20075; Package emacs. (Tue, 07 Apr 2015 13:30:05 GMT) Full text and rfc822 format available.

Message #8 received at 20075 <at> debbugs.gnu.org (full text, mbox):

From: Dmitry Gutov <dgutov <at> yandex.ru>
To: "sindikat <at> mail36.net (sindikat"@mail36.net), 20075 <at> debbugs.gnu.org
Subject: Re: bug#20075: 24.3; json.el functions are recursive
Date: Tue, 07 Apr 2015 16:29:41 +0300
Hi!

On 03/10/2015 11:35 PM, sindikat <at> mail36.net (sindikat <at> mail36.net) wrote:
> Feature request: rewrite `json.el' so that it doesn't use recursive
> functions. Emacs doesn't support TCO, therefore invoking `json.el'
> functions on huge data structures results in stack overflow.
>
> For example, I created a ridiculously huge data structure using a
> function from `dash.el':  ...

Have you seen this to be an actual problem in practice?

Would you be interested in implementing this feature?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#20075; Package emacs. (Fri, 28 May 2021 00:43:02 GMT) Full text and rfc822 format available.

Message #11 received at 20075 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Dmitry Gutov <dgutov <at> yandex.ru>
Cc: sindikat <at> mail36.net, 20075 <at> debbugs.gnu.org
Subject: Re: bug#20075: 24.3; json.el functions are recursive
Date: Fri, 28 May 2021 02:42:41 +0200
Dmitry Gutov <dgutov <at> yandex.ru> writes:

> On 03/10/2015 11:35 PM, sindikat <at> mail36.net (sindikat <at> mail36.net) wrote:
>> Feature request: rewrite `json.el' so that it doesn't use recursive
>> functions. Emacs doesn't support TCO, therefore invoking `json.el'
>> functions on huge data structures results in stack overflow.
>>
>> For example, I created a ridiculously huge data structure using a
>> function from `dash.el':  ...
>
> Have you seen this to be an actual problem in practice?

There was no response to this.  However, Emacs has in recent years
gotten support for libjansson to parse JSON, so this issue shouldn't be
relevant any more, and I'm closing this bug report.

(And if it is, I think the work-around is to increase max-specpdl-size
around the json.el functions.)

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




bug closed, send any further explanations to 20075 <at> debbugs.gnu.org and sindikat <at> mail36.net (sindikat <at> mail36.net) Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Fri, 28 May 2021 00:43:02 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Fri, 25 Jun 2021 11:24:08 GMT) Full text and rfc822 format available.

This bug report was last modified 3 years and 364 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.