thread-start! causes medea to leak memory pasted by klm` on Mon Feb 8 13:35:11 2016

(use matchable medea spiffy uri-common intarweb comparse intarweb miscmacros)

;; ==================== debug
;; if you start nrepl and connect to it, you'll get the same results
;; (nrepl's thread-start! causes heap to grow).
;; (thread-start! (lambda () (use nrepl) (nrepl 1234)))
;; ==================== globals

(thread-start!
 (lambda ()
   (print "heap-size should be steady for 10 seconds")
   (thread-sleep! 10)
   (thread-start! (lambda ()
                    ;; this thread's existance alone makes the heap-size grow, it seems
                    (print "now the heap-size will grow for 10 seconds")
                    (thread-sleep! 10)
                    (print "now it'll be steady again (one of my favorite wtf moments)")))))

(thread-start!
 (lambda ()
   (let loop ()
     (print "heap-size: " (vector-ref (memory-statistics) 1))
     (flush-output)
     (thread-sleep! 1)
     (loop))))

;; (read-string 4 (make-repeating-port "ab")) => "abab"
(define (make-repeating-port string)
  (let* ((document (string->list string))
         (buffer document))
    (make-input-port
     (lambda () (let retry ()
             (if (pair? buffer)
                 (begin0 (car buffer) (set! buffer (cdr buffer)))
                 (begin (set! buffer document) (retry)))))
     error
     error)))

(let ()

  (define input-port (make-repeating-port " { } "))

  (let loop ((input input-port))
    (receive (json rest) (read-json input)
      (if (not (parser-input-end? rest))
          (loop rest)))))

output added by klm` on Mon Feb 8 13:38:11 2016

$ csi -s arp-boats.scm
heap-size should be steady for 10 seconds
heap-size: 5187304
heap-size: 5196128
heap-size: 5196848
heap-size: 5196864
heap-size: 5196096
heap-size: 5198416
heap-size: 5198672
heap-size: 5198344
heap-size: 5198400
heap-size: 5196808
now the heap-size will grow for 10 seconds
heap-size: 5202552
heap-size: 8497700
heap-size: 8691692
heap-size: 8885636
heap-size: 9075484
heap-size: 9266420
heap-size: 9454356
heap-size: 9640420
heap-size: 9823268
heap-size: 10005364
now it'll be steady again (one of my favorite wtf moments)
heap-size: 8358228
heap-size: 8358244
heap-size: 8356100
heap-size: 8358244