<AcadamaeDood>
Hi, beginner here, tried to compile miniPicoLisp on windows using gcc, can't quite get it to work as gcc throws a lot of errors regarding ram.d
<AcadamaeDood>
"ram.d:310:17: error: initializer element is not constant (any)0x145ca7d, (any)(num(doZero) + 2)"
<Regenaxer>
Hi AcadamaeDood! Strange
<beneroth>
hi AcadamaeDood, welcome here :)
<beneroth>
what OS ?
<AcadamaeDood>
Windows 64-bit
<AcadamaeDood>
Windows 10 64-bit*
<Regenaxer>
0x145ca7d is indeed a constant (the name)
<Regenaxer>
doZero is determined at link time
<AcadamaeDood>
Yeah, it's missing the ^ that indicates the problematic line
<AcadamaeDood>
All the errors are about the doX things
<Regenaxer>
So the linker cannot handle it it seems
<Regenaxer>
a linktime value plus 2
aw- has quit [Quit: Leaving.]
jibanes has quit [Ping timeout: 248 seconds]
<Regenaxer>
I don't know the Windows linker format and capabilities. It is not ELF I assume
<AcadamaeDood>
I'm using gcc-7.1.0 if that helps
<Regenaxer>
yes, but gcc must generate the system's binary format
jibanes has joined #picolisp
<Regenaxer>
No idea here
<beneroth>
Regenaxer, not ELF, exe :)
<Regenaxer>
I expect every linker format to support such offsets
<Regenaxer>
yes, sure
<beneroth>
AcadamaeDood, no access to a linux? or maybe you can get it run in midipix or the win-10 subsystem
<Regenaxer>
But it is a pity it it cannot compiled on Windows
<beneroth>
T
<Regenaxer>
mini used to be portable in this regard
<beneroth>
I think mini worked in the past, but I'm not sure
<Regenaxer>
Perhaps try mingw or so?
<Regenaxer>
yes
<beneroth>
or mobaXterm
<beneroth>
the midipix variant of picolisp has already all capabilities which mini offers, I would guess
<Regenaxer>
The RAM and ROM stuff was introduced for embedded stuff
<beneroth>
afaik it still has some bugs and problems, e.g. with forking (fork) and thelike, but probably the mini capabilities all work
<beneroth>
joebo might be able to tell more
<beneroth>
sorry AcadamaeDood, the windows activity of our community is existing but just rather so
<AcadamaeDood>
Son of a.. Avast is being a pissant :D
<AcadamaeDood>
The picoLisp win x86-64 thingie is apparently a "Very rare file" so it got sent off for investigation & promptly virus chested
<AcadamaeDood>
Also it automatically sandboxed the entire thing so it couldn't load the libraries
<beneroth>
AcadamaeDood, well you are probably more secure without any antivir. all had exploitable security vulnerabilities so far... best use Microsofts Antivirus, at least that one is not fighting the OS
<beneroth>
AntiVirus software is full of security issues. and it (by principle) can only protect you from very basic dangers - if the users of that PC don't click on every ad & attachment, you are really better off without one ;)
<beneroth>
all those rather small AntiVir development teams are not really more capable than the software vendor teams.. which also have more testing usually
<beneroth>
make backups & security updates & don't click on every bullshit == much more secure
<beneroth>
the less software on a computer the less attack surface
<rick42>
hello peeps, hny
<beneroth>
hey rick42
<beneroth>
rick42, can you help with picolisp on windows? you are also a windows user afaik :)
<rick42>
only a (forced, reluctant) windoze user, thanks to my employers. the only windoze i still have is a system i sneakernet files to (i.e., i don't directly net it to the internet) so it would kinda be a pain in the ass to troubleshoot with. sorry
<rick42>
AcadamaeDood uses av on win; I use "no internet" on mine. :)
<rick42>
AcadamaeDood: i recall that when i had a networked winbox that (i) it was win 7 pro and (ii) it built mini with no probs. i've never seen that error before iirc
<Regenaxer>
rick42, did you use gcc too?
<rick42>
yes
<rick42>
good point
<Regenaxer>
IIRC some people used mingw
<rick42>
the cygwin one at the time
<Regenaxer>
ok
<AcadamaeDood>
mingw-gcc to be exact, forgot those are separate
<Regenaxer>
I see
<AcadamaeDood>
mingw64
<rick42>
mingw-gcc should work
<Regenaxer>
Perhaps really rom.d makes problems now
<Regenaxer>
mini is indeed meant more for embedded systems
<Regenaxer>
saving precious RAM
<rick42>
tankfeeder: thanks
<rick42>
cess11: i was using something very close to that. thanks
<AcadamaeDood>
Welp, got miniPicoLisp to compile on a Tiny Core Linux virtual machine after installing the tcompile metapackage and wgetting the mini version. :D
<rick42>
\0/
<Regenaxer>
wow
<rick42>
tcl ftw
<Regenaxer>
But then also full picolisp should compile?
<rick42>
32bit
<AcadamaeDood>
64-bit tcl :D
<rick42>
nice
<AcadamaeDood>
Yeah, but I wanted to make sure I'm not doing anything stupid with make and such
<AcadamaeDood>
I was following the steps correctly, windows is just being a goofball for whatever reason
<AcadamaeDood>
Heck, the only difficulty I had was dropping out the https from wget, because openssl isn't installed on TCL by default :D
<AcadamaeDood>
But yeah, thanks for all the help :)
<rick42>
all, in awk, you can send a stream of text to another process in a pipeline by doing this: `print | "some-cmd"`, repeat that print statement, then finally `close("some-cmd")`. it's a bit weird (syntactically) but it works just fine. question: is something similar possible in pil?
<tankfeeder>
how this 2/3 pair appers in lower level? fighting against this
* rick42
goes off to read aoc
<Regenaxer>
rick42, you mean making such pipes? It is possible in pil, but syntactically not such elegant
<tankfeeder>
rick42: just do everything in pil
<rick42>
fam calling for late breakfast. i'll be back (still impressed at the imagination of the aoc writer)
<rick42>
Regenaxer, tankfeeder: ok. just don't know how. any hints?
<Regenaxer>
So the easiest is to call a shell (in '("sh" "-c" ...
<Regenaxer>
There is no function in pil *directly* connecting two child processes
<Regenaxer>
So 'pipe' with 'echo' can be used
<Regenaxer>
Grr, even the "new fast" Firefox is horribly slow on my Android tablet
<Regenaxer>
I give up
<Regenaxer>
revert to Chrome :(
<Regenaxer>
Firefox takes lot of time to load any page, and *lot* of RAM it seems
<Regenaxer>
Frequently Termux is killed after viewing a few pages in Firefox
<Regenaxer>
Killing Termux is not good, have usually several sessions open, editing files etc.
<clacke[m]>
bash cannot actually control two children
<Regenaxer>
I thought it can. Process group
<Regenaxer>
Signals are sent to each process in the group
<clacke[m]>
it forks a child, the child forks and execs a grandchild, then execs into the other side of the pipe
<Regenaxer>
Really? ok
<clacke[m]>
Not sure about longer pipes
<Regenaxer>
How should the child(ren) know that they must fork other process(es)?
<Regenaxer>
I'd expect it forks all children, and connects the pipes
<Regenaxer>
With dup2() system calls
<clacke[m]>
the easy way is to create a pipe, then fork, then start communicating with one side of the pipe
<Regenaxer>
That's what PicoLisp is doing all the time, for any child
<clacke[m]>
it's not so hard to imagine a chain of operations that goes through fork after fork
<Regenaxer>
In 'pipe' it also usese dup2
<Regenaxer>
it *is* hard
<Regenaxer>
bash must do it in the fork(), not the exec'ed processes
<Regenaxer>
the processes don't know of each other
<clacke[m]>
after each fork, one process will know that its supposed to be in one state, the other will know that it should be in another state
<clacke[m]>
it's tricky to get right and easy to get lost
<Regenaxer>
yep
<clacke[m]>
but not conceptually like implementing some deep academic algorithm
<clacke[m]>
it is "only hard work"
<Regenaxer>
Within fork() it is not hard
<Regenaxer>
Just that pil does not have a function for
<Regenaxer>
only 'pipe' for a single child
<Regenaxer>
and 'in' and 'out', also for single children
<Regenaxer>
No direct way to connect two children to each other
<clacke[m]>
I woukd have to look at how pil phrases it, but I am the phone and want to watch netflix until I crash :-)
<Regenaxer>
Could be implemented easily
<Regenaxer>
ok :)
<clacke[m]>
but connecting two children would have to be done by first creating the pipe, then forking into each child, and finally closing the pipe FDs on the parent, for reasons I forget, probably for SIGPIPE confusion
<clacke[m]>
I guess each child should also close the Other pipe end
<clacke[m]>
and dup their end to their stdin/out FD
<clacke[m]>
all the forking and piping can create a process tree that looks like the list of commands it came from
<clacke[m]>
forks, the child runs (create-long-pipe (cdr thingstodo)), then execs into (car thingstodo)
<clacke[m]>
that's what I meant by "easy"
<clacke[m]>
how does it know what to do? it knows if its the child or the parent, and it's in the middle of something
<Regenaxer>
You find lots of this stuff in the pil sources
<clacke[m]>
the process tree is a linked list of the same depth as the list sent to create-long-pipe
<Regenaxer>
it is the standard unix way
<clacke[m]>
good, I'm curious to look at it now :-)
<clacke[m]>
I have, fortunately and unfortunately, a lot of time on mynhands in jan and feb
<clacke[m]>
but now I have a date with Lucifer
<Regenaxer>
(?) ;)
<clacke[m]>
Lucifer the TV series. Good stuff.
<Regenaxer>
ah
<Regenaxer>
have fun! :)
<clacke[m]>
The Lord of Hell retires his position to become a club owner in L.A.
<clacke[m]>
and being generally snarky at everyone
<beneroth>
have fun :)
<beneroth>
happy new year clacke[m]
<beneroth>
don't become to snarky yourself, tuwat :)
<clacke[m]>
happy new year, picos! kallisti!
orivej has joined #picolisp
orivej has quit [Ping timeout: 255 seconds]
alexshendi has quit [Ping timeout: 264 seconds]
orivej has joined #picolisp
alexshendi has joined #picolisp
groovy2shoes has quit [Ping timeout: 265 seconds]
groovy2shoes has joined #picolisp
<rick42>
Regenaxer: i found out that the equivalent of doing what I explained earlier in awk
<rick42>
("in awk, you can send a stream of text to another process in a pipeline by doing this: `print ... | "some-cmd"`, repeat that print statement, then finally `close("some-cmd")`")
<rick42>
becomes child's play in pil:
<rick42>
(out '(some-cmd) (print ...) ...)
<rick42>
nothing else is needed. it's almost amazing, but certainly amazingly simple!
<rick42>
i was making things overly complicated, jedi-mind-tricking myself! lol :)