From iainduncanlists at gmail.com Fri Jun 5 12:47:12 2020 From: iainduncanlists at gmail.com (Iain Duncan) Date: Fri, 5 Jun 2020 12:47:12 -0700 Subject: [CM] bit OT, Might be of interest Message-ID: Heya Bill and others, I figured you all might find this interesting Rich Hickey just published a really interesting paper on the history, evolution, and design of Clojure from the proceedings of the ACM programming lanuages. Clojure shares a lot of design decisions with S7: lisp-1, CL macros with gensym, keywords, and a bunch more. S7's similarity is going to make it quite straightforward for me to port some of my favourite clojurisms I think. :-) https://clojure.org/about/history enjoy! iain -------------- next part -------------- An HTML attachment was scrubbed... URL: From bil at ccrma.Stanford.EDU Fri Jun 5 13:24:30 2020 From: bil at ccrma.Stanford.EDU (bil at ccrma.Stanford.EDU) Date: Fri, 05 Jun 2020 13:24:30 -0700 Subject: [CM] bit OT, Might be of interest In-Reply-To: References: Message-ID: Thanks for the pointer -- I read that article earlier today. I also was struck by the parallels -- I did not know about clojure when I made those choices for s7: "great minds think alike"! (I actually just skimmed the article -- it's very long -- I should read it more carefully, and look at clojure in greater detail). Are there any things in clojure that you really miss in s7? From iainduncanlists at gmail.com Fri Jun 5 16:37:15 2020 From: iainduncanlists at gmail.com (Iain Duncan) Date: Fri, 5 Jun 2020 16:37:15 -0700 Subject: [CM] bit OT, Might be of interest In-Reply-To: References: Message-ID: Hi Bill, yeah Clojure is (IMHO) a really thoughtfully designed language. I think not many people coming to lisp-for-computer-music from the normal jobbing computer programmer side (as opposed to computer music) realize how much of what they like in Clojure is in S7. Before finding S7 I was looking at various music in clojure projects, but fundamentally it's a JVM language so the timing is never going to be adequately under control, and audio interfacing is not really there. S7 on C++ gives me most of what I love in Clojure, with a bunch that Clojure doesn't have, and the ability to drop into C anytime. I should put some thought into this and respond again later, but off the top of my head there are a few things that I like a lot in it, and may or may not be interesting to you. - the notion of metadata annotations on data structures is really handy - there are bunch of nice convenience macros, some of which I plan on porting: thread-first, thread-last, doto - the convenience macros for declaring anonymous functions are handy, really just a shorthand for lambda, but still handy - the immutable data structures are impressive, in that you can pass around huge things purely by value. I'm not sure how valuable they would be in a computer music conference, but they are pretty darned cool for making sure an app is heavily parallelizable. - the software transactional memory system is likewise very impressive. Interestingly, one of the most successful companies I assessed in my "real job", assessing startups for private equity investments, was a Clojure shop, and between the JVM's multi-threading and Clojures software transactional memory and immutable data-structures, they just sidestepped the typical cloud infrastructure concerns we see companies putting tons of time and money into. They stood up a few big JVM machines behind a load balancer and that was it. It was quite the poster child for functional programming in the cloud era. If I ever get sucked back into CTOing, it'll be because of a Clojure offer. If I go back to doing business apps in a serious way, that would be first choice If you want to look into it further, I'd recommend the Joy of Clojure as the most in depth look under the hood. Programming Clojure is also good, and Clojure Applied. Hope that's helpful! iain On Fri, Jun 5, 2020 at 1:24 PM wrote: > Thanks for the pointer -- I read that article earlier today. > I also was struck by the parallels -- I did not know about > clojure when I made those choices for s7: "great minds think > alike"! (I actually just skimmed the article -- it's very > long -- I should read it more carefully, and look at clojure > in greater detail). Are there any things in clojure that > you really miss in s7? > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From bil at ccrma.Stanford.EDU Sat Jun 6 07:34:17 2020 From: bil at ccrma.Stanford.EDU (bil at ccrma.Stanford.EDU) Date: Sat, 06 Jun 2020 07:34:17 -0700 Subject: [CM] bit OT, Might be of interest In-Reply-To: References: Message-ID: <14064cff1a45dfaff4d55beaa1888ce9@ccrma.stanford.edu> My understanding of the transactional memory stuff was that it was a way to simplify multithreaded programs. When I had within-s7 threads, I found they were slow because of contention for the heap and whatnot, and using multiple s7 interpreters instead was faster and simpler (from s7's point of view, of course). My thought was that thread-global variables could be handled through a traditional data base -- I think the libgdbm example in s7.html touches on this. The immutable! function sets its argument immutable, so I think almost anything in s7 can be marked as immutable (you can also use a setter function). It's not automatic, but you could obviously make it a local convention: (define (make-immutable-vector len) (immutable! (make-vector len))) A lot of the metadata info in clojure is also supported in s7, but under a different set of names: setter, documentation, signature, arity, and funclet for function definition location, argument list and source. Each function or c-object also has a local let that can contain arbitrary info under arbitrary names. I haven't implemented that for sequences, but you could implement it in scheme by using the sequence's setter function's closure (a kludge, but it should work). ;;; a function with user-defined metadata: (define func (let ((my-special-info "hi")) (lambda (x) (+ x 1)))) ((funclet func) :my-special-info) -> "hi" ;;; use define-constant to define an immutable function ;;; a vector with user-defined metadata (define vct (let ((v (make-vector 23))) (set! (setter 'v) (let ((my-info "ho")) (lambda (s v) v))) (immutable! v))) (immutable? vct) -> #t (vector-set! vct 0 32) -> error: can't vector-set! ... (it is immutable) ((funclet (setter vct)) :my-info) -> "ho" I need to look at clojure more closely -- I probably misunderstand the argot. From iainduncanlists at gmail.com Sat Jun 6 12:03:18 2020 From: iainduncanlists at gmail.com (Iain Duncan) Date: Sat, 6 Jun 2020 12:03:18 -0700 Subject: [CM] bit OT, Might be of interest In-Reply-To: <14064cff1a45dfaff4d55beaa1888ce9@ccrma.stanford.edu> References: <14064cff1a45dfaff4d55beaa1888ce9@ccrma.stanford.edu> Message-ID: Thanks Bill, that gives me a bunch more to chew on. As part of my documentation for Scheme For Max, I plan on writing a page "S7 for people coming from Clojure". When I do so I will be sure to check here to make sure I present things accurately. :-) iain On Sat, Jun 6, 2020 at 7:34 AM wrote: > My understanding of the transactional memory stuff was that it was a way > to simplify multithreaded programs. When I had within-s7 threads, I > found > they were slow because of contention for the heap and whatnot, and > using multiple s7 interpreters instead was faster and simpler (from > s7's point of view, of course). My thought was that thread-global > variables could be handled through a traditional data base -- I think > the libgdbm example in s7.html touches on this. > > The immutable! function sets its argument immutable, so I think > almost anything in s7 can be marked as immutable (you can also > use a setter function). It's not automatic, but you could > obviously make it a local convention: > > (define (make-immutable-vector len) > (immutable! (make-vector len))) > > A lot of the metadata info in clojure is also supported in s7, but > under a different set of names: setter, documentation, signature, > arity, > and funclet for function definition location, argument list and source. > Each function or c-object also has a local let that can > contain arbitrary info under arbitrary names. I haven't > implemented that for sequences, but you could implement it > in scheme by using the sequence's setter function's closure > (a kludge, but it should work). > > ;;; a function with user-defined metadata: > (define func > (let ((my-special-info "hi")) > (lambda (x) > (+ x 1)))) > > ((funclet func) :my-special-info) -> "hi" > > ;;; use define-constant to define an immutable function > > ;;; a vector with user-defined metadata > (define vct > (let ((v (make-vector 23))) > (set! (setter 'v) > (let ((my-info "ho")) > (lambda (s v) > v))) > (immutable! v))) > > (immutable? vct) -> #t > (vector-set! vct 0 32) -> error: can't vector-set! ... (it is immutable) > ((funclet (setter vct)) :my-info) -> "ho" > > I need to look at clojure more closely -- I probably > misunderstand the argot. > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From iainduncanlists at gmail.com Mon Jun 8 09:03:11 2020 From: iainduncanlists at gmail.com (Iain Duncan) Date: Mon, 8 Jun 2020 09:03:11 -0700 Subject: [CM] Help wanted, making defered/scheduled functions Message-ID: Hi list, I'm hoping someone can give me some brief guidance as I'm sure this is a solved problem in S7 and CM but is beyond my lisp knowledge for how to do it correctly. Max/MSP has a scheduler that works with it's global clock. I want to enable something like the following: (delay :4n '(my-funct a b c)) So the delaying side will be implemented in C, and that side will handle converting :4n to the right time according to the max clock and then call *something* in S7 from C at the right time. My question is what the right way to store and then call the delayed function is, given that it might also have anonymous elements (delay :4n (list (lambda (x) (...)) :foo :bar)) Ideally, the way this is done would be compatible with future plans to allow a variant that we can cancel: (define future (delay :4n '(my-fun a b c))) ... now I can cancel it by doing something to future if need be Do I need to do something like have my arg 3 to delay be converted to a function and environment captured and stored with gensym? Is there a known pattern for this that I can look at in the common music sources or other lisp literature? Any help preventing slow wheel re-invention much appreciated! thanks iain -------------- next part -------------- An HTML attachment was scrubbed... URL: From k.s.matheussen at gmail.com Mon Jun 8 10:32:16 2020 From: k.s.matheussen at gmail.com (Kjetil Matheussen) Date: Mon, 8 Jun 2020 19:32:16 +0200 Subject: [CM] Help wanted, making defered/scheduled functions In-Reply-To: References: Message-ID: For realtime or semi-realtime usage, you normally store the callbacks in a binary heap. (https://en.wikipedia.org/wiki/Binary_heap) A binary heap implemented in an array is both very efficient and quite simple: https://github.com/kmatheussen/radium/blob/master/common/PriorityQueue.hpp You can look at Radium's scheduler, which uses a binary heap, here: https://github.com/kmatheussen/radium/blob/master/api/api_various.cpp#L4175 Example: (define (callback) (display "500ms later") 500) ;; I.e. call me again in 500ms. Return #f instead to stop being called again. ;; start it (ra:schedule 500 callback) ;; stop it (ra:remove-schedule callback) On Mon, Jun 8, 2020 at 6:06 PM Iain Duncan wrote: > > Hi list, I'm hoping someone can give me some brief guidance as I'm sure this is a solved problem in S7 and CM but is beyond my lisp knowledge for how to do it correctly. > > Max/MSP has a scheduler that works with it's global clock. I want to enable something like the following: > > (delay :4n '(my-funct a b c)) > > So the delaying side will be implemented in C, and that side will handle converting :4n to the right time according to the max clock and then call *something* in S7 from C at the right time. My question is what the right way to store and then call the delayed function is, given that it might also have anonymous elements > > (delay :4n (list (lambda (x) (...)) :foo :bar)) > > Ideally, the way this is done would be compatible with future plans to allow a variant that we can cancel: > > (define future (delay :4n '(my-fun a b c))) > ... now I can cancel it by doing something to future if need be > > Do I need to do something like have my arg 3 to delay be converted to a function and environment captured and stored with gensym? Is there a known pattern for this that I can look at in the common music sources or other lisp literature? Any help preventing slow wheel re-invention much appreciated! > > thanks > iain > > > _______________________________________________ > Cmdist mailing list > Cmdist at ccrma.stanford.edu > https://cm-mail.stanford.edu/mailman/listinfo/cmdist From iainduncanlists at gmail.com Mon Jun 8 20:37:47 2020 From: iainduncanlists at gmail.com (Iain Duncan) Date: Mon, 8 Jun 2020 20:37:47 -0700 Subject: [CM] Help wanted, making defered/scheduled functions In-Reply-To: References: Message-ID: Thanks Kjetil, I will take a look at the Radium sources. Much appreciated, iain On Mon, Jun 8, 2020 at 10:32 AM Kjetil Matheussen wrote: > For realtime or semi-realtime usage, you normally store the callbacks > in a binary heap. (https://en.wikipedia.org/wiki/Binary_heap) A binary > heap implemented in an array is both very efficient and quite simple: > https://github.com/kmatheussen/radium/blob/master/common/PriorityQueue.hpp > > You can look at Radium's scheduler, which uses a binary heap, here: > https://github.com/kmatheussen/radium/blob/master/api/api_various.cpp#L4175 > > Example: > > (define (callback) > (display "500ms later") > 500) ;; I.e. call me again in 500ms. Return #f instead to stop > being called again. > > ;; start it > (ra:schedule 500 callback) > > ;; stop it > (ra:remove-schedule callback) > > On Mon, Jun 8, 2020 at 6:06 PM Iain Duncan > wrote: > > > > Hi list, I'm hoping someone can give me some brief guidance as I'm sure > this is a solved problem in S7 and CM but is beyond my lisp knowledge for > how to do it correctly. > > > > Max/MSP has a scheduler that works with it's global clock. I want to > enable something like the following: > > > > (delay :4n '(my-funct a b c)) > > > > So the delaying side will be implemented in C, and that side will handle > converting :4n to the right time according to the max clock and then call > *something* in S7 from C at the right time. My question is what the right > way to store and then call the delayed function is, given that it might > also have anonymous elements > > > > (delay :4n (list (lambda (x) (...)) :foo :bar)) > > > > Ideally, the way this is done would be compatible with future plans to > allow a variant that we can cancel: > > > > (define future (delay :4n '(my-fun a b c))) > > ... now I can cancel it by doing something to future if need be > > > > Do I need to do something like have my arg 3 to delay be converted to a > function and environment captured and stored with gensym? Is there a known > pattern for this that I can look at in the common music sources or other > lisp literature? Any help preventing slow wheel re-invention much > appreciated! > > > > thanks > > iain > > > > > > _______________________________________________ > > Cmdist mailing list > > Cmdist at ccrma.stanford.edu > > https://cm-mail.stanford.edu/mailman/listinfo/cmdist > -------------- next part -------------- An HTML attachment was scrubbed... URL: From j_hearon at hotmail.com Wed Jun 10 17:55:37 2020 From: j_hearon at hotmail.com (James Hearon) Date: Thu, 11 Jun 2020 00:55:37 +0000 Subject: [CM] snd 20.4, f32 segfault Message-ID: Hi, I'm having a strange problem after upgrading to f32 from f31. I needed to rebuild snd because of a libgsl issue. ./snd: error while loading shared libraries: libgsl.so.23: cannot open shared object file: No such file or directory Trying to rebuild with fresh srcs. ./configure --with-s7 --with-gsl --with-alsa --without-gui It builds, but when I try to run >./snd, I get a segfault. [jhearon at dhcp-168-105-83-235 snd-20-command]$ ./snd writing libc_s7.c loading libc_s7.so Segmentation fault (core dumped) I'm not exactly sure what's going on. I'm including a valgrind output, if that helps. Regards, Jim [jhearon at dhcp-168-105-83-235 snd-20-command]$ valgrind ./snd ==11749== Memcheck, a memory error detector ==11749== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. ==11749== Using Valgrind-3.16.0 and LibVEX; rerun with -h for copyright info ==11749== Command: ./snd ==11749== loading libc_s7.so ==11749== Invalid write of size 4 ==11749== at 0x46D1A7: add_opt_func (s7.c:60763) ==11749== by 0x46D1A7: s7_set_i_ii_function (s7.c:60840) ==11749== by 0x6555990: libc_s7_init (in /home/jhearon/libc_s7.so) ==11749== by 0x4E2D61: load_shared_object (s7.c:30010) ==11749== by 0x4E2D61: load_shared_object (s7.c:29952) ==11749== by 0x4E319B: g_load (s7.c:30184) ==11749== by 0x47049E: op_c_ss (s7.c:91384) ==11749== by 0x47049E: eval.isra.0 (s7.c:93493) ==11749== by 0x4E385E: s7_load_with_environment (s7.c:30130) ==11749== by 0x4E3B2A: g_require (s7.c:30472) ==11749== by 0x487596: apply_c_macro (s7.c:86109) ==11749== by 0x46E172: eval.isra.0 (s7.c:94049) ==11749== by 0x4E385E: s7_load_with_environment (s7.c:30130) ==11749== by 0x6864A8: snd_doit (snd-nogui.c:724) ==11749== by 0x422699: main (snd.c:629) ==11749== Address 0x180001c9 is not stack'd, malloc'd or (recently) free'd ==11749== ==11749== ==11749== Process terminating with default action of signal 11 (SIGSEGV): dumping core ==11749== Access not within mapped region at address 0x180001C9 ==11749== at 0x46D1A7: add_opt_func (s7.c:60763) ==11749== by 0x46D1A7: s7_set_i_ii_function (s7.c:60840) ==11749== by 0x6555990: libc_s7_init (in /home/jhearon/libc_s7.so) ==11749== by 0x4E2D61: load_shared_object (s7.c:30010) ==11749== by 0x4E2D61: load_shared_object (s7.c:29952) ==11749== by 0x4E319B: g_load (s7.c:30184) ==11749== by 0x47049E: op_c_ss (s7.c:91384) ==11749== by 0x47049E: eval.isra.0 (s7.c:93493) ==11749== by 0x4E385E: s7_load_with_environment (s7.c:30130) ==11749== by 0x4E3B2A: g_require (s7.c:30472) ==11749== by 0x487596: apply_c_macro (s7.c:86109) ==11749== by 0x46E172: eval.isra.0 (s7.c:94049) ==11749== by 0x4E385E: s7_load_with_environment (s7.c:30130) ==11749== by 0x6864A8: snd_doit (snd-nogui.c:724) ==11749== by 0x422699: main (snd.c:629) ==11749== If you believe this happened as a result of a stack ==11749== overflow in your program's main thread (unlikely but ==11749== possible), you can try to increase the size of the ==11749== main thread stack using the --main-stacksize= flag. ==11749== The main thread stack size used in this run was 8388608. ==11749== ==11749== HEAP SUMMARY: ==11749== in use at exit: 11,644,308 bytes in 2,671 blocks ==11749== total heap usage: 3,392 allocs, 721 frees, 11,951,327 bytes allocated ==11749== ==11749== LEAK SUMMARY: ==11749== definitely lost: 0 bytes in 0 blocks ==11749== indirectly lost: 0 bytes in 0 blocks ==11749== possibly lost: 933,221 bytes in 1,939 blocks ==11749== still reachable: 10,711,087 bytes in 732 blocks ==11749== suppressed: 0 bytes in 0 blocks ==11749== Rerun with --leak-check=full to see details of leaked memory ==11749== ==11749== For lists of detected and suppressed errors, rerun with: -s ==11749== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0) Segmentation fault (core dumped) -------------- next part -------------- An HTML attachment was scrubbed... URL: From bil at ccrma.Stanford.EDU Thu Jun 11 03:42:37 2020 From: bil at ccrma.Stanford.EDU (bil at ccrma.Stanford.EDU) Date: Thu, 11 Jun 2020 03:42:37 -0700 Subject: [CM] snd 20.4, f32 segfault In-Reply-To: References: Message-ID: The function that segfaults is one whose signature changed recently (I added the s7_scheme* argument), so my first guess is that you have an old object file somewhere. I would make clean rm *.o rm *.so rm libc_s7.c make and see if it's ok. I think you can see what is actually being loaded via strace -e trace=file ./snd From j_hearon at hotmail.com Thu Jun 11 12:56:13 2020 From: j_hearon at hotmail.com (James Hearon) Date: Thu, 11 Jun 2020 19:56:13 +0000 Subject: [CM] Cmdist Digest, Vol 145, Issue 5 In-Reply-To: References: Message-ID: Hi, Thank you for the stack trace command. Sorry for submitting the output here and creating a long post. I'm not sure, from the trace, what might be the problem. I'm using fresh sources to build snd. I'm wondering if it's something in my prefs file, way below, causing it to die? Thank you, Jim [jhearon at localhost snd-20-command]$ strace -e trace=file ./snd execve("./snd", ["./snd"], 0x7ffcb54a3cf0 /* 59 vars */) = 0 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/lib64/libasound.so.2", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/lib64/libfftw3.so.3", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/lib64/libgsl.so.25", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/lib64/libgslcblas.so.0", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/lib64/libm.so.6", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/lib64/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/lib64/librt.so.1", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/dev/snd/controlC0", O_RDONLY|O_CLOEXEC) = 3 stat("/usr/share/alsa/alsa.conf", {st_mode=S_IFREG|0644, st_size=9598, ...}) = 0 openat(AT_FDCWD, "/usr/share/alsa/alsa.conf", O_RDONLY) = 3 access("/etc/alsa/conf.d", R_OK) = 0 stat("/etc/alsa/conf.d", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 openat(AT_FDCWD, "/etc/alsa/conf.d", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 3 openat(AT_FDCWD, "/etc/alsa/conf.d/50-pulseaudio.conf", O_RDONLY) = 3 openat(AT_FDCWD, "/etc/alsa/conf.d/99-pulseaudio-default.conf", O_RDONLY) = 3 access("/etc/asound.conf", R_OK) = 0 stat("/etc/asound.conf", {st_mode=S_IFREG|0644, st_size=55, ...}) = 0 openat(AT_FDCWD, "/etc/asound.conf", O_RDONLY) = 3 access("/home/jhearon/.asoundrc", R_OK) = -1 ENOENT (No such file or directory) stat("/usr/share/alsa/alsa.conf", {st_mode=S_IFREG|0644, st_size=9598, ...}) = 0 stat("/usr/share/alsa/alsa.conf", {st_mode=S_IFREG|0644, st_size=9598, ...}) = 0 stat("/usr/share/alsa/alsa.conf", {st_mode=S_IFREG|0644, st_size=9598, ...}) = 0 stat("/usr/share/alsa/alsa.conf", {st_mode=S_IFREG|0644, st_size=9598, ...}) = 0 openat(AT_FDCWD, "/usr/lib64/alsa-lib/libasound_module_pcm_pulse.so", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/lib64/libpulse.so.0", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib64/pulseaudio/tls/x86_64/x86_64/libpulsecommon-13.99.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/usr/lib64/pulseaudio/tls/x86_64/x86_64", 0x7ffc96a6f130) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib64/pulseaudio/tls/x86_64/libpulsecommon-13.99.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/usr/lib64/pulseaudio/tls/x86_64", 0x7ffc96a6f130) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib64/pulseaudio/tls/x86_64/libpulsecommon-13.99.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/usr/lib64/pulseaudio/tls/x86_64", 0x7ffc96a6f130) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib64/pulseaudio/tls/libpulsecommon-13.99.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/usr/lib64/pulseaudio/tls", 0x7ffc96a6f130) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib64/pulseaudio/x86_64/x86_64/libpulsecommon-13.99.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/usr/lib64/pulseaudio/x86_64/x86_64", 0x7ffc96a6f130) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib64/pulseaudio/x86_64/libpulsecommon-13.99.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/usr/lib64/pulseaudio/x86_64", 0x7ffc96a6f130) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib64/pulseaudio/x86_64/libpulsecommon-13.99.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) stat("/usr/lib64/pulseaudio/x86_64", 0x7ffc96a6f130) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib64/pulseaudio/libpulsecommon-13.99.so", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib64/pulseaudio/libX11-xcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib64/libX11-xcb.so.1", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib64/pulseaudio/libX11.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib64/libX11.so.6", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib64/pulseaudio/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib64/libxcb.so.1", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib64/pulseaudio/libICE.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib64/libICE.so.6", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib64/pulseaudio/libSM.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib64/libSM.so.6", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib64/pulseaudio/libXtst.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib64/libXtst.so.6", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib64/pulseaudio/libsystemd.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib64/libsystemd.so.0", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib64/pulseaudio/libsndfile.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib64/libsndfile.so.1", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib64/pulseaudio/libasyncns.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib64/libasyncns.so.0", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib64/pulseaudio/libdbus-1.so.3", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib64/libdbus-1.so.3", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib64/pulseaudio/libcap.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib64/libcap.so.2", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib64/pulseaudio/libXau.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib64/libXau.so.6", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib64/pulseaudio/libuuid.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib64/libuuid.so.1", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib64/pulseaudio/libXext.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib64/libXext.so.6", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib64/pulseaudio/libXi.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib64/libXi.so.6", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib64/pulseaudio/liblzma.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib64/liblzma.so.5", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib64/pulseaudio/liblz4.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib64/liblz4.so.1", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib64/pulseaudio/libgcrypt.so.20", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib64/libgcrypt.so.20", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib64/pulseaudio/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib64/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib64/pulseaudio/libgsm.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib64/libgsm.so.1", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib64/pulseaudio/libFLAC.so.8", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib64/libFLAC.so.8", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib64/pulseaudio/libogg.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib64/libogg.so.0", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib64/pulseaudio/libvorbis.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib64/libvorbis.so.0", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib64/pulseaudio/libvorbisenc.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib64/libvorbisenc.so.2", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib64/pulseaudio/libresolv.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib64/libresolv.so.2", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/usr/lib64/pulseaudio/libgpg-error.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/lib64/libgpg-error.so.0", O_RDONLY|O_CLOEXEC) = 3 access("/etc/system-fips", F_OK) = -1 ENOENT (No such file or directory) readlink("/proc/self/exe", "/opt/snd-20-command/snd", 99) = 23 openat(AT_FDCWD, "/home/jhearon/.pulse/client.conf", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/home/jhearon/.config/pulse/client.conf", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/etc/pulse/client.conf", O_RDONLY|O_CLOEXEC) = 7 readlink("/proc/self/exe", "/opt/snd-20-command/snd", 99) = 23 openat(AT_FDCWD, "/usr/lib64/gconv/gconv-modules.cache", O_RDONLY) = 8 openat(AT_FDCWD, "/etc/pulse/client.conf.d", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/dev/shm/", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 7 openat(AT_FDCWD, "/dev/urandom", O_RDONLY|O_NOCTTY|O_CLOEXEC) = 7 stat("/run/user/1000", {st_mode=S_IFDIR|0700, st_size=300, ...}) = 0 mkdir("/run/user/1000/pulse", 0700) = -1 EEXIST (File exists) openat(AT_FDCWD, "/run/user/1000/pulse", O_RDONLY|O_NOCTTY|O_NOFOLLOW|O_CLOEXEC) = 8 lstat("/run", {st_mode=S_IFDIR|0755, st_size=1320, ...}) = 0 lstat("/run/user", {st_mode=S_IFDIR|0755, st_size=60, ...}) = 0 lstat("/run/user/1000", {st_mode=S_IFDIR|0700, st_size=300, ...}) = 0 lstat("/run/user/1000/pulse", {st_mode=S_IFDIR|0700, st_size=80, ...}) = 0 stat("/usr/share/alsa/alsa.conf", {st_mode=S_IFREG|0644, st_size=9598, ...}) = 0 readlink("/proc/self/exe", "/opt/snd-20-command/snd", 99) = 23 openat(AT_FDCWD, "/home/jhearon/.pulse/client.conf", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/home/jhearon/.config/pulse/client.conf", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/etc/pulse/client.conf", O_RDONLY|O_CLOEXEC) = 7 openat(AT_FDCWD, "/etc/pulse/client.conf.d", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/dev/shm/", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 7 openat(AT_FDCWD, "/dev/urandom", O_RDONLY|O_NOCTTY|O_CLOEXEC) = 7 stat("/run/user/1000", {st_mode=S_IFDIR|0700, st_size=300, ...}) = 0 mkdir("/run/user/1000/pulse", 0700) = -1 EEXIST (File exists) openat(AT_FDCWD, "/run/user/1000/pulse", O_RDONLY|O_NOCTTY|O_NOFOLLOW|O_CLOEXEC) = 8 lstat("/run", {st_mode=S_IFDIR|0755, st_size=1320, ...}) = 0 lstat("/run/user", {st_mode=S_IFDIR|0755, st_size=60, ...}) = 0 lstat("/run/user/1000", {st_mode=S_IFDIR|0700, st_size=300, ...}) = 0 lstat("/run/user/1000/pulse", {st_mode=S_IFDIR|0700, st_size=80, ...}) = 0 getcwd("/opt/snd-20-command", 4096) = 20 access("/etc/snd_s7.conf", F_OK) = -1 ENOENT (No such file or directory) access("/etc/snd.conf", F_OK) = -1 ENOENT (No such file or directory) access("/home/jhearon/.snd_prefs_s7", F_OK) = 0 stat("/home/jhearon/.snd_prefs_s7", {st_mode=S_IFREG|0777, st_size=1246, ...}) = 0 openat(AT_FDCWD, "/home/jhearon/.snd_prefs_s7", O_RDONLY) = 3 access("/home/jhearon/.snd_s7", F_OK) = -1 ENOENT (No such file or directory) access("/home/jhearon/.snd", F_OK) = -1 ENOENT (No such file or directory) stat("repl.scm", {st_mode=S_IFREG|0644, st_size=58629, ...}) = 0 openat(AT_FDCWD, "repl.scm", O_RDONLY) = 3 stat("libc.scm", {st_mode=S_IFREG|0644, st_size=96351, ...}) = 0 openat(AT_FDCWD, "libc.scm", O_RDONLY) = 3 stat("cload.scm", {st_mode=S_IFREG|0644, st_size=27703, ...}) = 0 openat(AT_FDCWD, "cload.scm", O_RDONLY) = 3 access("libc_s7.c", F_OK) = 0 access("libc_s7.so", F_OK) = 0 stat("libc_s7.so", {st_mode=S_IFREG|0775, st_size=317656, ...}) = 0 stat("libc_s7.c", {st_mode=S_IFREG|0664, st_size=396622, ...}) = 0 access("libc.scm", F_OK) = 0 stat("libc_s7.so", {st_mode=S_IFREG|0775, st_size=317656, ...}) = 0 stat("libc.scm", {st_mode=S_IFREG|0644, st_size=96351, ...}) = 0 loading libc_s7.so stat("libc_s7.so", {st_mode=S_IFREG|0775, st_size=317656, ...}) = 0 access("/opt/snd-20/libc_s7.so", F_OK) = -1 ENOENT (No such file or directory) access("/home/jhearon/libc_s7.so", F_OK) = 0 openat(AT_FDCWD, "/home/jhearon/libc_s7.so", O_RDONLY|O_CLOEXEC) = 3 --- SIGSEGV {si_signo=SIGSEGV, si_code=SI_KERNEL, si_addr=NULL} --- +++ killed by SIGSEGV (core dumped) +++ Segmentation fault (core dumped) ----------------------------- snd_prefs_s7 ; Snd 17.0 (6-Dec-16) options saved Sat 17-Dec-2016 09:36 HST (set! (default-output-chans) 2) (set! (default-output-srate) 48000) (set! (default-output-header-type) mus-riff) (set! (with-toolbar) #t) (set! (dac-size) 1024) (set! (peaks-font) "fixed") (set! (bold-peaks-font) "fixed") (set! (axis-label-font) "fixed") (set! (listener-font) "9x15") (set! (save-state-file) "saved-snd.scm") (set! (html-dir) ".") (set! (mus-srate) 48000.0000) (set! (mus-file-buffer-size) 65536) (set! (mus-array-print-length) 12) ; end of snd options (if (not (member "/usr/local/share/snd" *load-path*)) (set! *load-path* (cons "/usr/local/share/snd" *load-path*))) (if (not (member "/home/jhearon" *load-path*)) (set! *load-path* (cons "/home/jhearon" *load-path*))) ________________________________ From: cmdist-bounces at ccrma.Stanford.EDU on behalf of cmdist-request at ccrma.Stanford.EDU Sent: Thursday, June 11, 2020 7:00 PM To: cmdist at ccrma.Stanford.EDU Subject: Cmdist Digest, Vol 145, Issue 5 Send Cmdist mailing list submissions to cmdist at ccrma.stanford.edu To subscribe or unsubscribe via the World Wide Web, visit https://cm-mail.stanford.edu/mailman/listinfo/cmdist or, via email, send a message with subject or body 'help' to cmdist-request at ccrma.stanford.edu You can reach the person managing the list at cmdist-owner at ccrma.stanford.edu When replying, please edit your Subject line so it is more specific than "Re: Contents of Cmdist digest..." Today's Topics: 1. snd 20.4, f32 segfault (James Hearon) 2. Re: snd 20.4, f32 segfault (bil at ccrma.Stanford.EDU) ---------------------------------------------------------------------- Message: 1 Date: Thu, 11 Jun 2020 00:55:37 +0000 From: James Hearon To: "cmdist at ccrma.Stanford.EDU" Subject: [CM] snd 20.4, f32 segfault Message-ID: Content-Type: text/plain; charset="iso-8859-1" Hi, I'm having a strange problem after upgrading to f32 from f31. I needed to rebuild snd because of a libgsl issue. ./snd: error while loading shared libraries: libgsl.so.23: cannot open shared object file: No such file or directory Trying to rebuild with fresh srcs. ./configure --with-s7 --with-gsl --with-alsa --without-gui It builds, but when I try to run >./snd, I get a segfault. [jhearon at dhcp-168-105-83-235 snd-20-command]$ ./snd writing libc_s7.c loading libc_s7.so Segmentation fault (core dumped) I'm not exactly sure what's going on. I'm including a valgrind output, if that helps. Regards, Jim [jhearon at dhcp-168-105-83-235 snd-20-command]$ valgrind ./snd ==11749== Memcheck, a memory error detector ==11749== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. ==11749== Using Valgrind-3.16.0 and LibVEX; rerun with -h for copyright info ==11749== Command: ./snd ==11749== loading libc_s7.so ==11749== Invalid write of size 4 ==11749== at 0x46D1A7: add_opt_func (s7.c:60763) ==11749== by 0x46D1A7: s7_set_i_ii_function (s7.c:60840) ==11749== by 0x6555990: libc_s7_init (in /home/jhearon/libc_s7.so) ==11749== by 0x4E2D61: load_shared_object (s7.c:30010) ==11749== by 0x4E2D61: load_shared_object (s7.c:29952) ==11749== by 0x4E319B: g_load (s7.c:30184) ==11749== by 0x47049E: op_c_ss (s7.c:91384) ==11749== by 0x47049E: eval.isra.0 (s7.c:93493) ==11749== by 0x4E385E: s7_load_with_environment (s7.c:30130) ==11749== by 0x4E3B2A: g_require (s7.c:30472) ==11749== by 0x487596: apply_c_macro (s7.c:86109) ==11749== by 0x46E172: eval.isra.0 (s7.c:94049) ==11749== by 0x4E385E: s7_load_with_environment (s7.c:30130) ==11749== by 0x6864A8: snd_doit (snd-nogui.c:724) ==11749== by 0x422699: main (snd.c:629) ==11749== Address 0x180001c9 is not stack'd, malloc'd or (recently) free'd ==11749== ==11749== ==11749== Process terminating with default action of signal 11 (SIGSEGV): dumping core ==11749== Access not within mapped region at address 0x180001C9 ==11749== at 0x46D1A7: add_opt_func (s7.c:60763) ==11749== by 0x46D1A7: s7_set_i_ii_function (s7.c:60840) ==11749== by 0x6555990: libc_s7_init (in /home/jhearon/libc_s7.so) ==11749== by 0x4E2D61: load_shared_object (s7.c:30010) ==11749== by 0x4E2D61: load_shared_object (s7.c:29952) ==11749== by 0x4E319B: g_load (s7.c:30184) ==11749== by 0x47049E: op_c_ss (s7.c:91384) ==11749== by 0x47049E: eval.isra.0 (s7.c:93493) ==11749== by 0x4E385E: s7_load_with_environment (s7.c:30130) ==11749== by 0x4E3B2A: g_require (s7.c:30472) ==11749== by 0x487596: apply_c_macro (s7.c:86109) ==11749== by 0x46E172: eval.isra.0 (s7.c:94049) ==11749== by 0x4E385E: s7_load_with_environment (s7.c:30130) ==11749== by 0x6864A8: snd_doit (snd-nogui.c:724) ==11749== by 0x422699: main (snd.c:629) ==11749== If you believe this happened as a result of a stack ==11749== overflow in your program's main thread (unlikely but ==11749== possible), you can try to increase the size of the ==11749== main thread stack using the --main-stacksize= flag. ==11749== The main thread stack size used in this run was 8388608. ==11749== ==11749== HEAP SUMMARY: ==11749== in use at exit: 11,644,308 bytes in 2,671 blocks ==11749== total heap usage: 3,392 allocs, 721 frees, 11,951,327 bytes allocated ==11749== ==11749== LEAK SUMMARY: ==11749== definitely lost: 0 bytes in 0 blocks ==11749== indirectly lost: 0 bytes in 0 blocks ==11749== possibly lost: 933,221 bytes in 1,939 blocks ==11749== still reachable: 10,711,087 bytes in 732 blocks ==11749== suppressed: 0 bytes in 0 blocks ==11749== Rerun with --leak-check=full to see details of leaked memory ==11749== ==11749== For lists of detected and suppressed errors, rerun with: -s ==11749== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0) Segmentation fault (core dumped) -------------- next part -------------- An HTML attachment was scrubbed... URL: ------------------------------ Message: 2 Date: Thu, 11 Jun 2020 03:42:37 -0700 From: bil at ccrma.Stanford.EDU To: James Hearon Cc: "cmdist at ccrma.Stanford.EDU" Subject: Re: [CM] snd 20.4, f32 segfault Message-ID: Content-Type: text/plain; charset=US-ASCII; format=flowed The function that segfaults is one whose signature changed recently (I added the s7_scheme* argument), so my first guess is that you have an old object file somewhere. I would make clean rm *.o rm *.so rm libc_s7.c make and see if it's ok. I think you can see what is actually being loaded via strace -e trace=file ./snd ------------------------------ _______________________________________________ Cmdist mailing list Cmdist at ccrma.stanford.edu https://cm-mail.stanford.edu/mailman/listinfo/cmdist End of Cmdist Digest, Vol 145, Issue 5 ************************************** -------------- next part -------------- An HTML attachment was scrubbed... URL: From bil at ccrma.Stanford.EDU Thu Jun 11 13:42:02 2020 From: bil at ccrma.Stanford.EDU (bil at ccrma.Stanford.EDU) Date: Thu, 11 Jun 2020 13:42:02 -0700 Subject: [CM] Cmdist Digest, Vol 145, Issue 5 In-Reply-To: References: Message-ID: I think it couldn't find the local libc_s7.so, so it loaded some other version: > access("/opt/snd-20/libc_s7.so", F_OK) = -1 ENOENT (No such file or > directory) > access("/home/jhearon/libc_s7.so", F_OK) = 0 > openat(AT_FDCWD, "/home/jhearon/libc_s7.so", O_RDONLY|O_CLOEXEC) = 3 So, you're running the no-gui Snd, but not from the directory it was built in, and (I think) you have an older version of Snd on /home/jhearon. I think in this case, repl.scm needs to be smarter about versions. (It's repl.scm that is trying to load libc_s7.so). Hmmm... From j_hearon at hotmail.com Fri Jun 19 11:09:29 2020 From: j_hearon at hotmail.com (James Hearon) Date: Fri, 19 Jun 2020 18:09:29 +0000 Subject: [CM] unbound variable with CM_Patterns.scm Message-ID: Hi, I'm still having trouble with f32, and snd 20.4, s7 9.1, sndlib 24.7 open snd $ ./snd choose Show Listener >(load "/opt/snd-20/CM_patterns.scm") ;unquote: no argument, 'unquote ; (list-values 'begin (list-values... >(define aaa (make-cycle (list 1 2 3))) ;unbound variable make-cycle ; (list-value 'begin (list-values... I see it writes a fresh libc_s7.c, and libc_s7.so when I load CM_Patterns.scm, but I still don't have something hooked up correctly yet. Wondering where it might be going wrong? Thank You, Regards, Jim -------------- next part -------------- An HTML attachment was scrubbed... URL: From bil at ccrma.Stanford.EDU Fri Jun 19 11:48:06 2020 From: bil at ccrma.Stanford.EDU (bil at ccrma.Stanford.EDU) Date: Fri, 19 Jun 2020 11:48:06 -0700 Subject: [CM] =?utf-8?q?unbound_variable_with_CM=5FPatterns=2Escm?= In-Reply-To: References: Message-ID: <127b229eca45c45cf7aa9c7b98791a97@ccrma.stanford.edu> I think this is a problem with define-record-type which I changed not too long ago. Will poke at it... From bil at ccrma.Stanford.EDU Fri Jun 19 12:01:28 2020 From: bil at ccrma.Stanford.EDU (bil at ccrma.Stanford.EDU) Date: Fri, 19 Jun 2020 12:01:28 -0700 Subject: [CM] =?utf-8?q?unbound_variable_with_CM=5FPatterns=2Escm?= In-Reply-To: References: Message-ID: <71e721be6d13313d315e487fffce3125@ccrma.stanford.edu> In r7rs.scm, change line 433 from (define-expansion ...) to (define-macro ...) -- not sure why this fixes it! (define-expansion (define-record-type type make ? . fields) to (define-macro (define-record-type type make ? . fields) From chris.actondev at gmail.com Tue Jun 23 08:50:22 2020 From: chris.actondev at gmail.com (Christos Vagias) Date: Tue, 23 Jun 2020 17:50:22 +0200 Subject: [CM] Cannot generate libc_s7.c Message-ID: Hi all (my first mail here, hope it'll work out) I was trying the repl demo (using repl.scm) using the following snippet from the online documentation int main(int argc, char **argv) { s7_scheme *sc; sc = s7_init(); s7_load(sc, "repl.scm"); s7_eval_c_string(sc, "((*repl* 'run))"); return(0); } I noticed that the commit (from the github mirror) 357aaa1 broke this. Getting the following error: writing libc_s7.c ;symbol->string argument, (provided? 'linux), is a pair but should be a symbol ; name ; libc.scm, line 1751, position: 96342 ; add-one-constant: (list c-type (symbol->s... ; c-type: reader-cond ; c: (provided? 'linux) ; add-one-constant: (cons (list c-type (sym... ; constants: ((FILE* "stderr") (FILE* "stdou... ; c-define-1: ((end-c-file) (delete-file o-... ; o-file-name: libc_s7.o Up until the previous commit it works fine. Another note/question: I'm really excited that I discovered *s7 *(so many thanks to Bill Schottstaedt). Though I'm wondering about the long-term maintenance of the project. I'm saying this mainly for the lack of some changelogs (proper versions, seeing what changed from a version and another). For example: to find where this breaking change got introduced I was going through the "bugs" commits (all the commits are named bugs heh) I'm not complaining, but I would really like to know about the project status cause s7 is like a hidden gem. Thanks, Christos -------------- next part -------------- An HTML attachment was scrubbed... URL: From bil at ccrma.Stanford.EDU Tue Jun 23 10:20:29 2020 From: bil at ccrma.Stanford.EDU (bil at ccrma.Stanford.EDU) Date: Tue, 23 Jun 2020 10:20:29 -0700 Subject: [CM] =?utf-8?q?Cannot_generate_libc=5Fs7=2Ec?= In-Reply-To: References: Message-ID: Good grief -- I don't know how I missed that. I'll poke at it later today. On s7 maintenance, I intend to keep it going indefinitely -- I very much enjoy working on it. I have my own daily changelog, going back 20 years, but I didn't know how to upload that into cvs, and never looked into it when I changed to svn. It's a finger-macro now. I'll add that to my infinite TODO list. The real problem with the Soundforge svn site is that it can be incredibly slow; I'm not sure older versions are even accessible. From iainduncanlists at gmail.com Tue Jun 23 11:35:23 2020 From: iainduncanlists at gmail.com (Iain Duncan) Date: Tue, 23 Jun 2020 11:35:23 -0700 Subject: [CM] Cannot generate libc_s7.c In-Reply-To: References: Message-ID: Hi Bill, access to an up-to-date changelog would be great, I wonder if this is something Woody could roll into his github mirror somehow? Just a thought. iain On Tue, Jun 23, 2020 at 10:20 AM wrote: > Good grief -- I don't know how I missed that. I'll > poke at it later today. > > On s7 maintenance, I intend to keep it going indefinitely -- > I very much enjoy working on it. I have my own daily changelog, > going back 20 years, but I didn't know how to upload that > into cvs, and never looked into it when I changed to svn. > It's a finger-macro now. I'll add that to my infinite TODO > list. The real problem with the Soundforge svn site is that > it can be incredibly slow; I'm not sure older versions are even > accessible. > > _______________________________________________ > Cmdist mailing list > Cmdist at ccrma.stanford.edu > https://cm-mail.stanford.edu/mailman/listinfo/cmdist > -------------- next part -------------- An HTML attachment was scrubbed... URL: From wdouglass at carnegierobotics.com Wed Jun 24 04:49:42 2020 From: wdouglass at carnegierobotics.com (Woody Douglass) Date: Wed, 24 Jun 2020 11:49:42 +0000 Subject: [CM] Cannot generate libc_s7.c In-Reply-To: References: , Message-ID: Guys, there's a Wiki attached to the github, you can see it here: https://github.com/wdouglass/s7/wiki, maybe a changelog page could be added to that. The repo itself is currently an automated mirror of Bill's svn snd repo, so I can't diverge from that; the history only goes back to 2017. Finally, i'm considering creating an "organization" in github to host this repo; i just don't want it looking like it's my project, i'm just a big fan! any suggestions for a name for the organization? does one already exist? Thanks, Woody -- Sent from Hiri On 2020-06-23 14:36:29-04:00 cmdist-bounces at ccrma.Stanford.EDU wrote: Hi Bill, access to an up-to-date changelog would be great, I wonder if this is something Woody could roll into his github mirror somehow? Just a thought. iain On Tue, Jun 23, 2020 at 10:20 AM > wrote: Good grief -- I don't know how I missed that. I'll poke at it later today. On s7 maintenance, I intend to keep it going indefinitely -- I very much enjoy working on it. I have my own daily changelog, going back 20 years, but I didn't know how to upload that into cvs, and never looked into it when I changed to svn. It's a finger-macro now. I'll add that to my infinite TODO list. The real problem with the Soundforge svn site is that it can be incredibly slow; I'm not sure older versions are even accessible. _______________________________________________ Cmdist mailing list Cmdist at ccrma.stanford.edu https://cm-mail.stanford.edu/mailman/listinfo/cmdist -------------- next part -------------- An HTML attachment was scrubbed... URL: From iainduncanlists at gmail.com Wed Jun 24 06:46:01 2020 From: iainduncanlists at gmail.com (Iain Duncan) Date: Wed, 24 Jun 2020 06:46:01 -0700 Subject: [CM] Cannot generate libc_s7.c In-Reply-To: References: Message-ID: If there is some convenient way for Bill to have his change log pushed up to something on the net that I can access, I would be happy to write a Python script to get it into github, if that's useful. I've done a lot of web scraping and net plumbing in Python over the last 10 years.. :-) Or heck, if there's anything else that would benefit from a scripted bridge from whatever is convenient for Bill into github, happy to help. iain On Wed, Jun 24, 2020 at 4:49 AM Woody Douglass < wdouglass at carnegierobotics.com> wrote: > Guys, there's a Wiki attached to the github, you can see it here: > https://github.com/wdouglass/s7/wiki, maybe a changelog page could be > added to that. > > The repo itself is currently an automated mirror of Bill's svn snd repo, > so I can't diverge from that; the history only goes back to 2017. > > Finally, i'm considering creating an "organization" in github to host this > repo; i just don't want it looking like it's my project, i'm just a big > fan! any suggestions for a name for the organization? does one already > exist? > > Thanks, > Woody > > > -- > Sent from Hiri > > > On 2020-06-23 14:36:29-04:00 cmdist-bounces at ccrma.Stanford.EDU wrote: > > Hi Bill, access to an up-to-date changelog would be great, I wonder if > this is something Woody could roll into his github mirror somehow? Just a > thought. > iain > > On Tue, Jun 23, 2020 at 10:20 AM wrote: > >> Good grief -- I don't know how I missed that. I'll >> poke at it later today. >> >> On s7 maintenance, I intend to keep it going indefinitely -- >> I very much enjoy working on it. I have my own daily changelog, >> going back 20 years, but I didn't know how to upload that >> into cvs, and never looked into it when I changed to svn. >> It's a finger-macro now. I'll add that to my infinite TODO >> list. The real problem with the Soundforge svn site is that >> it can be incredibly slow; I'm not sure older versions are even >> accessible. >> >> _______________________________________________ >> Cmdist mailing list >> Cmdist at ccrma.stanford.edu >> https://cm-mail.stanford.edu/mailman/listinfo/cmdist > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From bil at ccrma.Stanford.EDU Wed Jun 24 10:26:22 2020 From: bil at ccrma.Stanford.EDU (bil at ccrma.Stanford.EDU) Date: Wed, 24 Jun 2020 10:26:22 -0700 Subject: [CM] =?utf-8?q?Cannot_generate_libc=5Fs7=2Ec?= In-Reply-To: References: , Message-ID: <9f05479c7b860fd9d8167d8493b894c2@ccrma.stanford.edu> Thanks very much Ian and Woody for the offers of help. The changelogs are very telegraphic -- more to remind me of when I did something than make any sense to anyone else. I'll start trying to conjure up something more informative than "bugs". I don't know anything about github or its organizations. I am very grateful for the github s7 site you've set up. From chris.actondev at gmail.com Wed Jun 24 14:30:08 2020 From: chris.actondev at gmail.com (Christos Vagias) Date: Wed, 24 Jun 2020 23:30:08 +0200 Subject: [CM] Cannot generate libc_s7.c In-Reply-To: <9f05479c7b860fd9d8167d8493b894c2@ccrma.stanford.edu> References: <9f05479c7b860fd9d8167d8493b894c2@ccrma.stanford.edu> Message-ID: About github organizations, there seems to be the https://github.com/ccrma . Now, personally I haven't ever used svn, but I think moving to git would be helpful for organization (issues, collaborations, discussions etc). It doesn't have to be github (if anyone has strong feelings about microsoft), there exists other solutions like gitlab etc. A tip to Bil, in case there interest in checking out git, that thing exists: "git-svn - Bidirectional operation between a Subversion repository and Git" https://git-scm.com/docs/git-svn Again, I'm new to s7 but I wanted to build audio tools with embedding scheme, and after a long search (and almost choosing chez) I discovered s7 :) That's why I'm interested to the organization/documentation part, because projects that lack in these tend to disappear in the long run (and that would be a shame) I would be also happy to help if I can in any way, such as git setup, continuous integration (about tests) etc. On Wed, 24 Jun 2020 at 19:26, wrote: > Thanks very much Ian and Woody for the offers of help. > The changelogs are very telegraphic -- more to remind > me of when I did something than make any sense to anyone > else. I'll start trying to conjure up something more > informative than "bugs". I don't know anything about > github or its organizations. I am very grateful for > the github s7 site you've set up. > > _______________________________________________ > Cmdist mailing list > Cmdist at ccrma.stanford.edu > https://cm-mail.stanford.edu/mailman/listinfo/cmdist > -------------- next part -------------- An HTML attachment was scrubbed... URL: From iainduncanlists at gmail.com Thu Jun 25 13:50:34 2020 From: iainduncanlists at gmail.com (Iain Duncan) Date: Thu, 25 Jun 2020 13:50:34 -0700 Subject: [CM] Cannot generate libc_s7.c In-Reply-To: References: <9f05479c7b860fd9d8167d8493b894c2@ccrma.stanford.edu> Message-ID: Hi Christos, I'm doing similar work: building audio and music tools embedding Scheme, and I've been really happy so far with S7. I used it for Scheme For Max, my open source Max external embedding the interpreter. I wasn't going to say anything yet because it's not 100% confirmed, but it's looking very much like I'll be starting a Masters in Music Tech here in Victoria with Andrew Schloss, and my work with S7 and Max/MSP will be the core project, so I will certainly be contributing to public documentation around S7 as part of that, and will be happy to do whatever is helpful to Bill in terms of project docs and repos. iain On Wed, Jun 24, 2020 at 2:31 PM Christos Vagias wrote: > About github organizations, there seems to be the https://github.com/ccrma > . > Now, personally I haven't ever used svn, but I think moving to git would > be helpful for organization > (issues, collaborations, discussions etc). It doesn't have to be github > (if anyone has strong feelings about microsoft), > there exists other solutions like gitlab etc. > > A tip to Bil, in case there interest in checking out git, that thing > exists: "git-svn - Bidirectional operation between a Subversion repository > and Git" > https://git-scm.com/docs/git-svn > > Again, I'm new to s7 but I wanted to build audio tools with embedding > scheme, and after a long search (and almost choosing chez) I discovered s7 > :) > That's why I'm interested to the organization/documentation part, because > projects that lack in these tend to disappear in the long run (and that > would be a shame) > > I would be also happy to help if I can in any way, such as git setup, > continuous integration (about tests) etc. > > On Wed, 24 Jun 2020 at 19:26, wrote: > >> Thanks very much Ian and Woody for the offers of help. >> The changelogs are very telegraphic -- more to remind >> me of when I did something than make any sense to anyone >> else. I'll start trying to conjure up something more >> informative than "bugs". I don't know anything about >> github or its organizations. I am very grateful for >> the github s7 site you've set up. >> >> _______________________________________________ >> Cmdist mailing list >> Cmdist at ccrma.stanford.edu >> https://cm-mail.stanford.edu/mailman/listinfo/cmdist >> > _______________________________________________ > Cmdist mailing list > Cmdist at ccrma.stanford.edu > https://cm-mail.stanford.edu/mailman/listinfo/cmdist > -------------- next part -------------- An HTML attachment was scrubbed... URL: From chris.actondev at gmail.com Sat Jun 27 13:44:07 2020 From: chris.actondev at gmail.com (Christos Vagias) Date: Sat, 27 Jun 2020 22:44:07 +0200 Subject: [CM] About set! Message-ID: Hi all, I'm diving slowly into s7, and I stumbled upon this --- (define (inc! x) (format #t "increasing x: ~A" x) (set! x (+ 1 x)) (format #t "x is now ~A" x)) (define x 0) (inc! x) (inc! x) x ;; x is still 0 --- What is my basic misunderstanding here? Of course I could make a pure function (inc x), but I want to know what happens here. I have the vague idea that one could manage to have this inc! function with environments. "box" from chez scheme is more or less the concept i'm going for https://cisco.github.io/ChezScheme/csug9.5/objects.html#./objects:s82 (let ([incr! (lambda (x) (set-box! x (+ (unbox x) 1)))]) (let ([b (box 3)]) (incr! b) (unbox b))) => 4 How does one implement this in s7? Thanks, Christos -------------- next part -------------- An HTML attachment was scrubbed... URL: From bil at ccrma.Stanford.EDU Sat Jun 27 14:40:44 2020 From: bil at ccrma.Stanford.EDU (bil at ccrma.Stanford.EDU) Date: Sat, 27 Jun 2020 14:40:44 -0700 Subject: [CM] About set! In-Reply-To: References: Message-ID: <1681c5f5843f5f9e6be85c3c7cc0c6a7@ccrma.stanford.edu> In Scheme, function arguments are passed by value, so the outer x is not affected by the set!. You could use a macro: (define-macro (inc x) `(set! ,x (+ ,x 1))) or if you want boxes, r7rs has an implementation.