IRC channel logs


back to list of logs

<paroneayea>ACTION puzzles over autossh
<paroneayea>I packaged it, in theory... but it doesn't connect to anything!
<lfam>That sounds like a very secure implementation of ssh ;)
<paroneayea>lfam: :)
<davexunit>I imagine this was meant for #guix :)
<davexunit>ACTION reads guile-ssh manual
<paroneayea>davexunit: ha, yeah whoops
<paroneayea>oh yeah, that's packaged in guix, I should try it at some point...
<davexunit>it's fun
<davexunit>but I need to learn how to do all the cool stuff
<jcowan>I'm trying to build 2.1.2 on a system with 2.0.9 on it, and getting the dreaded "undefined symbol: GC_move_disappearing_link
<jcowan>" error
<jcowan>I did ./configure in the new directory
<jcowan>what now?
<davexunit>bah, the pipes interface strikes again
<davexunit>no way to close the input side of a pipe without closing the output side, too.
<jcowan>That's bad.
<jcowan>Any help for the build problem above?
<davexunit>sorry I have no idea.
<davexunit>I don't think any maintainers are here right now, writing to guile-user would probably be best.
<davexunit>or trying again later
<mark_weaver>jcowan: what version of libgc are you building guile 2.1.2 against?
<mark_weaver>guile 2.1.x requires libgc 7.0 or later, as documented in the README
<mark_weaver>maybe yours is too old
<jcowan>yes, it is
<jcowan>I missed that
<jcowan>actually, 'dnf install' says I have gc-7.4.2, so that should be fine
<jcowan>all four prereqs are apparently okay
<mark_weaver>what is dnf?
<mark_weaver>maybe guile's configure script is not finding the right libgc
<mark_weaver>ah, I'm showing my ignorance of fedora, clearly :)
<jcowan>yeah, it's the replacement for yum
<mark_weaver>jcowan: what is the output of "grep BDW_GC_ config.status" ?
<jcowan>S["BDW_GC_LIBS"]="-lgc "
<mark_weaver>jcowan: what is the output of "objdump --syms /usr/lib/ | grep GC_move_disappearing_link"
<mark_weaver>or maybe just /lib/, I'm not sure where it is on fedora nowadays
<jcowan>/lib is a symlink to /usr/lib, but anyway libgc-* is not there
<mark_weaver>can you find out where it is? maybe by asking the package manager to show you the list of files in that package?
<mark_weaver>jcowan: also, what is the output of "grep GC_MOVE_DISAPPEARING_LINK config.log" ?
<mark_weaver>actually, just the last line of it
<mark_weaver>jcowan: what is the output of "env | grep LIBRARY_PATH"
<mark_weaver>what what arguments did you pass to ./configure ?
<mark_weaver>(and any relevant environment variable settings at the time you ran configure)
<jcowan>LIBRARY_PATH does not exist
<jcowan>passed no arguments to configure
<mark_weaver>okay, I'll want to know the output of "objdump --syms /path/to/ | grep GC_move_disappearing_link" where /path/to is the location where the gc-7.4.2 package is installed
<jcowan>still trying to figure out how to make dnf cough up a list of files installed by a package
<mark_weaver>do you have another version of libgc installed in /usr/local or some other directory mentioned in your /etc/ or /etc/*
<jcowan>yes, in /usr/local/lib
<mark_weaver>ah, that might be the problem
<mark_weaver>it seems that ./configure found a libgc that included GC_move_disappearing_link, and then a different libgc was linked with libguile. maybe the one in /usr/local/lib is pre-7.0
<jcowan>it claims to be 1.0.3
<jcowan>i.e. incredibly ancient
<mark_weaver>jcowan: also beware /usr/local/lib/pkgconfig/bdw-gc.pc
<mark_weaver>but you'll probably want to blow away that copy of libgc in both /usr/local/lib and /usr/local/include
<mark_weaver>and the .pc file I just mentioned
<mark_weaver>and then maybe rerun "ldconfig" as root to regenerate the cache
<jcowan>ACTION nods
<jcowan>hopefully this doesn't break too many things
<jcowan>ACTION shaves the yak
<jcowan>Actually this is weird
<jcowan>dnf as I said claims to have 7.4.2 installed
<jcowan>but the listed file is
<mark_weaver>jcowan: oh, that's the so version, which is not the same as the source version number
<mark_weaver>libgc-7.4.2 corresponds to, so that looks current
<mark_weaver>but does dnf really install libgc in /usr/local ?
<mark_weaver>I'm dubious
<mark_weaver>heh :)
<jcowan>It doesn't claim to, but there it is, and it is not in /usr/lib
<jcowan>btw, "dubious" has been used for "doubtful" since 1632 at least, it is very much standard
<mark_weaver>jcowan: looks like "rpm -ql gc | grep" might be the right thing
<jcowan>ACTION bashes his forehead
<jcowan>ah, of course, /lib64
<mark_weaver>jcowan: okay, what's the output of "objdump --syms /lib64/ | grep GC_move_disappearing_link" ?
<mark_weaver>jcowan: do you have libgc in both /lib64 and /usr/local/lib ?
<jcowan>and it's not in the /usr/local/lib version either
<jcowan>they are not the same
<mark_weaver>jcowan: what is the output of "rpm -q gc" ?
<jcowan>looks like the copy in /usr/local/lib might be 7.2, at least I have a 7.2 in /usr/local/src
<jcowan>Isn't this bogus, using the same so version for incompatible libraries?
<mark_weaver>I don't know that they are incompatible
<mark_weaver>but if that function is not in either of them, I'm a bit stumped
<jcowan>maybe libgc has to be built with some config switch to make this function visible?
<jcowan>I didn't have any such problems building 2.0.9
<mark_weaver>the thing is, 'configure' seems to have concluded that the function is available, which is another mystery
<mark_weaver>did you run ./configure recently?
<mark_weaver>well, since this is 2.1.2, I guess you must have
<jcowan>first thing I did after untarring
<mark_weaver>in config.log, what are the two lines following the line containing "checking for GC_move_disappearing_link" ?
<mark_weaver>next three lines actually
<jcowan>configure:51836: gcc -o conftest -g -O2 conftest.c -lgc -lcrypt -lm >&5
<jcowan>configure:51836: $? = 0
<jcowan>configure:51836: result: yes
<jcowan>so either 7.2 or 7.4 should be fine per the README
<jcowan>And yet.
<jcowan>FWIW, the last thing that happens in the Makefile output before the error is GEN guile-procedures.texi
<jcowan>then comes
<jcowan>/home/cowan/source/guile-2.1.2/libguile/.libs/lt-guile: symbol lookup error: /home/cowan/source/guile-2.1.2/libguile/.libs/ undefined symbol: GC_move_disappearing_link
<mark_weaver>that's the first time that the 'guile' executable is run for the first time.
<jcowan>ACTION nods.
<mark_weaver>if it were my system, I would remove the libgc files in /usr/local/lib and /usr/local/include and try again starting from ./configure
<mark_weaver>there may be some problem arising from the mixture of the two libgc installations.
<jcowan>okay, will do
<mark_weaver>what is the output of "ldconfig -p | grep libgc" ?
<jcowan> (libc6,x86-64) => /usr/local/lib/
<jcowan> (libc6,x86-64) => /lib64/
<jcowan> (libc6,x86-64) => /usr/local/lib/
<jcowan> (libc6,x86-64) => /lib64/
<jcowan>so /usr/local/lib has priority
<jcowan>so do I just get rid of the .pc file, or does it need surgery?
<mark_weaver>it's possible that you ended up using the include files from /include and then run-time linking with the libraries in /usr/local/lib, and that might be bad.
<jcowan>yeah, looks that way
<jcowan>blowing away the .pc file
<jcowan>rerunning configure
<mark_weaver>jcowan: you'll definitely need to remove (or move out of the way) /usr/local/lib/libgc* as well
<jcowan>yeah, they are gone
<jcowan>Some of my other Schemes may break, but I'll worry about that later
<mark_weaver>removing the gc include files from /usr/local/include/ would also be a good idea
<mark_weaver>that would be the directory /usr/local/include/gc as well as /usr/local/include/gc*.h
<mark_weaver>well, just gc.h and gc_cpp.h to be on the safe side
<jcowan>missed the subdir, but surely if gc.h is not found, it won't matter
<jcowan>already running make
<mark_weaver>I don't know, if /usr/local/include is in the default search path for the C preprocessor, you might still pick up stuff from there.
<jcowan>ACTION nods.
<jcowan>If it still fails I'll go back and blow them away too
<jcowan>I broke SigScheme but that's no big deal, I'm sure I can rebuild it
<jcowan>damn, I accidentally blew away libgcroots as well
<mark_weaver>you might find GNU Guix to be an interesting way out of these problems :)
<jcowan>It's not my machine, though.
<mark_weaver>installing GNU Guix is far less intrusive than the things you are already doing to that system.
<jcowan>Okay, that seems to resolve it; I'm in the GUILEC stage of make
<mark_weaver>GNU Guix only modifies the directories /gnu/store, /var/guix, and /var/log/guix
<mark_weaver>and makes symlinks in ~/.guix-profile
<jcowan>ACTION nods
<mark_weaver>oh, and ~/.config/guix/latest
<mark_weaver>and that's it
<mark_weaver>jcowan: ah, good!
<jcowan>make completed, running make check
<jcowan>nice to have guile install with decent speed now
<jcowan>I never updated my 2.0.9 because it would take all day
<jcowan>okay, reinstalled libgcroots with dnf and now SigScheme is working again
<jcowan>so the Every Scheme Known To Man Test Box is fully updated now, except for Racket
<jcowan>Racket is one of the few Schemes I don't build from source (also JVM and CLR Schemes, where there is little point)
***Fuuzetsu is now known as Guest39765
<Jookia>o/ What's the idiomatic way to do a long if/elseif/elseif statement in Guile without tons of indents? I'm suspecting it'd involve 'or' somehow, but I want to execute code and use the return value to short-circuit and return
<Jookia>cond seems like the answer but I'm unsure
<xd1le>Jookia: yes, afaik
<xd1le>nee`: are you "M-x nemu"?
<civodul>Hello Guilers!
<nee`>xd1le: yes
<xd1le>nee`: cool
<b4283>sometimes i think the debug message of guile is really hard to understand
<b4283>is there a way to make it more readable ?
<nalaginrut>b4283: it may need some experiences to take advantage of it, but yes, I feel so too
<civodul>wingo: potluck? :-)
<wingo>mega-busy :/
<wingo>maybe tonight, if no one else sends the mail :)
<b4283>nalaginrut: yeah, my friend is solving SICP problems with the compiler, and is having trouble finding the mistake he made
<davidh>I just compiled from git and
<davidh>$ ./meta/gdb-uninstalled-guile
<davidh>Throw without catch before boot:
<davidh>Throw to key misc-error with args ("make_objcode_from_file" "bad header on object file: ~s" ("\\x7fELF\\x02\\x01\\x01�\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00") #f)Aborting.
<davidh>Aborted (core dumped)
<davidh>any ideas what to do to get it run in gdb?
<davidh>$ uname -a
<davidh>Linux localhorst 4.3.3-3-ARCH #1 SMP PREEMPT Wed Jan 20 08:12:23 CET 2016 x86_64 GNU/Linux
***dje_ is now known as xdje
<amz`>I'm wondering what the potluck is about...
<nalaginrut>amz`: just like a hackathon, Artanis was born in potluck
<dsmith-work>Tuesday Greetings, Guilers
<nalaginrut>ACTION is preparing Artanis-0.1.2, new session management, and template caching
<nalaginrut>not today, there're docs need to be updated
<stis__>hello guilers!
<stis__>ACTION is documenting guile-log internals - tons of new things.
<nalaginrut>stis__: cool
<xyh>see this ::
<xyh>poor kid's object oriented programming in scheme
<nalaginrut>when we in Scheme, we don't need to have a full-featured OO system ;-P
<xyh>just a toy, no much features
<vanila>does guile have a efficient total order of symbols? I don't care about dictionary ordering i just want something fast
<stis__>or a fun functional datastructure consider
<davexunit>vanila: "total order of symbols"?
<stis__>vanila: do you mean something that persists over multiple sessions?
<vanila>it doesn't have to persist
<vanila>just a < operation
<vanila>im imagining symbols are represented as integers internally when they get interned, or something
<stis__>object-address gieves you the adress of the symbol, that will give you a total order
<vanila>and it'd be nice to just compare that
<vanila>ok perfect thanks
<vanila>hey xyh :)
<xyh>hi vanila :) you are implementing unification for your little prolog ?
<vanila> imissed you last time
<vanila>xyh, sort of yeah, one thing i want to do is make a good distribution of it
<vanila>going to make it nice and easy to use from guile first
<xyh>are you using such things as WAM or ZIP ?
<xyh>ok then
<vanila>no its based on minikanren
<stis__>vanila: cool, do you have a certain prolog semantics as a goal like iso-prolog or the swi-prolog family?
<vanila>no moving away from prolog really
<vanila>trying to get it more like pure logic
<vanila>no cuts or anything
<stis__>ok that's makes it simpler to base it on kanren.
<vanila>what im trying to figure out just now is a nice language for implementing constraint systems
<vanila>constraint implementations are all very ad-hoc and ugly just now
<stis__>check out attributes in swi-prolog
<stis__>let me know if you want to know how to implement those in minikanren
<stis__>well that can be my potluck this year!!
<vanila>thansk :)
<vanila>ill ask you about this
<amz3>what can I do for the potluck
<amz3>I should have kept an idea aside...
<amz3>hello vanila, I planed to port your minikaren to guile anyway
<vanila>oh amz wonderufl
<vanila>i ant to contact micheal balentine too
<vanila>he's doing some really interesting stuff
<vanila>we should def collab
<amz3>(define (collab . ppl) (apply sum ppl))
<amz3>done, what's next!
<amz3>bijunctiono is def interesting
<Korhonen>So how does one pronounce guile?
<Korhonen>More like gwil or more like guyl?
<roelj>Korhonen: I think it's more like guyl
<amz3>I pronounce it guyl i think
<amz3>like agile :)
<amz3>but with 'u'
<davexunit>amz3: no, it's different.
<davexunit>the "g" is agile is pronounced like a "j"
<amz3>that's what I meant, in french G is pronounced like 'j' except when there's a 'u' after 'g', like in 'guile'
<amz3>I figured my explanation was not right
<davexunit>oh I see
<jcowan>Korhonen: It's a standard word of English, meaning "deceit, fraud"
<jcowan>thus semantically related to "scheme" which means (as a verb) "make a plot"
<taylan>Scheme, Guile, Racket... what a nasty bunch
<jcowan>Larceny, too
<jcowan>and perhaps Gauche, I'm not sure
<jcowan>Larceny comes in three flavors, native Larceny, Petit Larceny, and Common Larceny
<dsmith-work>Guile is pronounced like: mile, pile, while, Kyle, style, tile, bile, Nile (and probably more)
<Korhonen>But Stalin takes the crown.
<Korhonen>I always find it humorous how people who use "Larceny", "Racket" or "Guile" claim supreme moral superiority over someone who named a compiler "Stalin" as a joke.
<unknown_lamer>does anyone still do that?
<Korhonen>You sometimes see it that people are offended over the name. I rarely see people who actually use it though
<Korhonen>It got about as much noteriety over sometimes beatin hand-written C as it got over its name, I've never seen anything actually seriously using it, it was more smething of a novelty.
<Korhonen>Which just goes to show, there is no such thing as negative publicity.
<vanila>i doubt you can even run stalin today
<unknown_lamer>yeah, wasn't the last update to stalin aaaaaages ago?
<unknown_lamer>all the fast compiler people are using mlton nowadays I think
<vanila>im interested in the new monadic abstract interpreter stuff
<unknown_lamer>mlton: sure it make take a week and 64G of memory to compile, but hello world has never been faster ;)
<vanila>im not sure if it's the same sort of thing stalin/mlton do
<Korhonen>All I know is that both do aggressive "whole program optimization" and perform some advanced heurostics and lifetime analysis.
<Korhonen>I'm actually quite content with a praedictable optimization strategy and leaving it to the programmer to do most of that stuff herself.
<Korhonen>I pleasantly found out a while back that GHC actually does not even do common subexpression elimination except in a few select cases.
<dsmith-work>is away, or is it just the draconian corporate filtering I have to gou through now?
<Korhonen>Ddn't expect that but apparently with lazy evaluation there are some cases where doing common subexpression evaluation can turn constant space into quadratic space o whatever.
<dsmith-work>Korhonen: Hm. Have never considered that.
<Korhonen>It makes sense if you read it but I really never considered that.
<Korhonen>The solution to the problem is heinously unelegant in both cases though, writing duplicated computation or producing a structuraly different list which is still a powerset if ordering doesn't matter,both seem quite unelegant
<jcowan>Stalin works fine, its problem is that its community is utterly dysfunctional. There isn't even a mailing list to share patches on.
<Korhonen>It has a community?
<vanila>someone would need to take initiative
<Korhonen>You know people who use it?
<jcowan>A few. They are all polite versions of "Fuck you, Jack, I'm all right"
<Korhonen>Just my people.
<Korhonen>Stali does R4 only right?
<jcowan>Right, but you could front-end it with psyntax
<jcowan>What kind of surprises me, given the use cases, is that it doesn't do inexact complex numbers.
<Korhonen>Yeah, I was wondering if you could implement full R6 fairly lexically on top of R4 without really changing the runtime
<jcowan>vanila: It's not enough to take initiative if nobody cares
<Korhonen>as far as I now Stalin doesn't do the full numerical tower though
<jcowan>No, it doesn't
<Korhonen>Yeah, that.
<jcowan>just fixnums and flonums
<vanila>is there any reason to care about it today? I am assuming the ideas from it have been integrated into other modern compilers
<jcowan>I'd say no, they haven't, at least not Scheme compilers
<Korhonen>Stalin's ideas are a massive compilation time tradeof.
<jcowan>If your code is *fully* debugged and Gambit and Chicken aren't fast enough, then Stalin is the only place to go.
<jcowan>But yes, it takes a whole day to compile itself, e.g.
<vanila>do you know if it's in any way related to these new CFA analysis techniques
<vanila>does that stuff subsume what stalin does?
<Korhonen>They weren't particularly new ideas too as I understand it, he threw every single optimization techique known to man into it.
<jcowan>And didn't document any of it anywhere
<Korhonen>He didn't invent them, no one would just be insane enough to make such a heavily optimizing compiler since you lose all error reporting and it takes forever.
<jcowan>the code has no comments (except a few religious slogans in Hebrew) and there is nothing but the code and one paper
<Korhonen>My kind of people.
<Korhonen>I need to learn to comment better.
<vanila>hm what is the point of bootstrapping it
<vanila>if its still slower after doing thtat
<Korhonen>So that it compiles faster of course.
<Korhonen>Well, one assumes it will be faster than if it got compiled with say Larceny.
<jcowan>You mean the Chicken version? Well, the idea was that Chicken-compiled Stalin is easier to develop than Stalin-compiled Stalin, because the turnaround time is more modest even if the result runs even slower.
<jcowan>Stalin is like developing with punch cards; you punch your program, get a listing to make sure you didn't botch any of them, and submit the card deck to the Computing Center. The next day you get your output.
<jcowan>Compiler errors? Sorry, try again tomorrow.
<jcowan>ACTION actually did that for a bit in 1975
<Korhonen>Well, I can deinitely see a use for it.
<Korhonen>I you _know_ it's bug free, why not put in some of that time.
<Korhonen>I may or may not run Gentoo.
<jcowan>ACTION nods
<jcowan>Even I leave out Stalin when comparing Schemes; it's too awkward to use it
<Korhonen>I always list it, a concept and name as outrageous merits a mention.
<Korhonen>Besides, the name is really clever.
<jcowan>"Stalin optimizes everything. Brutally."
<Korhonen>And "stalling" as in it takes forever.
<Korhonen>I actually named my cat after the compiler.
<jcowan>ACTION chuckles
<Korhonen>But everyone seems to think I named him after the Dictator.
<jcowan>Is your cat a brutal optimizer?
<vanila>what im wondering is if this sort of stuff <> will be used to create a compiler that's as powerful at optimizing but much faster
<Korhonen>No, I am alwys puzzled by the behaviour my cat displays which seems realyl inefficient.
<Korhonen>Some of that stuff can only be explained by a neural network once evolved for efficient behaviour taken outside of its natural habitat and now producing bizarre behaviour
<jcowan>Most cat behavior can be accounted for by most hunts being failures and the problem of shedding heat
<Korhonen>Well, I have a balcony with a small stair I made to the ground below it so can go outside, one of the things he does is first go down the stairs, then up the down again and then outside.
<Korhonen>I'm confused, he does that a lot.
<Korhonen>Never when he comes inside though
<jcowan>Sounds to me like making sure his retreat path is clear
<jcowan>What goes down may or may not be able to come up
<Korhonen>And of course the way he eats his prey
<Korhonen>He spends like half the energy contained in the thing on torturing it to death slowly before eating it.
<jcowan>Part of that is because cats have short muzzles. They kill by biting the back of the neck, but if the prey is in the mouth, they have to risk letting it go before they can make the fatal bite
<jcowan>Also, cats hunt for practice, not just because they are hungry -- hungry cats tend to scavenge instead
<jcowan>A cat that catches a rabbit or other dangerous prey will dispatch it as fast as possible
<jcowan>and of course some cats, like mine, are just dain bramaged
<Korhonen>Maybe I shouldn't have named him Stali, that whole playng wth his food thing is kind of sickening to be hoest.
<wingo>yall a bit off topic
<vanila>hiya wingo
<vanila>have you looked at any of this research?
<jcowan>where jcowan is, there off-topicness also tends to proliferate
***holomorph is now known as wasahouse
***wasahouse is now known as ubybzbecu
***ubybzbecu is now known as holomorph