[ art / civ / cult / cyb / diy / drg / feels / layer / lit / λ / q / r / sci / sec / tech / w / zzz ] archive provided by lainchan.jp

lainchan archive - /λ/ - 17892

File: 1470890092139.png (54.67 KB, 300x217, praxis.png)


Does anyone here use praxis?


Do you like live coding? If so, do you prefer to make your own environment, or use an existing one? If you make your own, do you prefer to use an off the shelf embeddable language like Lua or s7 scheme, or do you implement your own language?

This seems like a good board. Thank you for your time.


>do you prefer to use an off the shelf embeddable language like Lua or s7 scheme, or do you implement your own language?

why not just make your own language in scheme?


praxis was made so a Smalltalk/Lisp Machine style live environment can be enjoyed. The pure text based editing style is reminiscent of the Commodore 64 - summon code, freely change the editor behaviour, inject code - programming is the main interface into the world.


...someone talk to me


I've tried compiling it once but couldn't. It looks really fun so I will try again once I finally get a new machine.


When you try, I'll help if you like.


yeah make failed. Here's the error message.



CMakeLists.txt was only written for the windows build. For Linux, you need qmake.



I should get rid of CMakeLists.txt, because it causes confusion. I always use Qt Creator, so I don't even think about it or notice it on either platform.

Praxis doesn't depend on the Qt library itself at all, you just need qmake to generate the makefile. However, I'm not sure if you can get qmake separately from the Qt library.

Sorry for the confusion.


Sorry about the feels. Should I refrain from posting feels here?



figured out how to compile it, still throws an error.



What were the steps you took to compile it?


Those are all the inline Io functions.
IOINLINE needs to be set correctly in Common_inline.h. This depends on your platform and toolchain. The only platforms and toolchains supported are MSVC + Qt Creator/qmake on Win32, and qmake on Linux.

What platform are you on? What are your compile steps?


There's Fluxus too, another livecoding-oriented exploratory platform, written in lisp.


arch linux.

I cd'd to the main directory and typed

qmake; make



Try invoking qmake this way:

qmake praxis.pro -r -spec linux-g++

This is how Qt Creator invokes qmake on my linux machine. I'm pretty sure when I invoked plain qmake it worked too, so I guess your install of qmake is picking up different defaults.

If this works for you, I'll document it.


same problem. I think this warrants a github issue.


Same problem after doing:

qmake praxis.pro -r -spec linux-g++

Or same problem, another person, another machine?


I meant same problem after 'qmake praxis.pro -r -spec linux-g++', but it seems I just needed to re-clone the repo and it works now.


and no, compilation failed with all the same messages at a later point.


Yes, you would need to do a clean before rebuilding with the new Makefile (generated from the new qmake incantation).

So, praxis now runs for you? Try running praxis from one of the subdirectories of prods.


no, compilation failed just a little bit later than it used to. Same error messages.


I just did a qmake and make, and it works fine on both my Linux machines. Here is the generated Makefile:


Could you post yours so we can compare? I'm using the qmake that came with the Qt library, How did you install your qmake? Its possible that your arch install of qmake doesn't have the make specs set correctly. As I mentioned above, the #define IOINLINE needs to be set correctly (happens in Common_inline.h), and this will only happen if certain other platform specific #defines are defined in the Makefile.

If you want the qmake provided when you install the Qt library, I suggest using the installer provided by the Qt project rather than the debian/pacman repository:



>How did you install your qmake?

came with the Qt library, version 5.7.0 qmake is version 3.0

here's the generated makefile: https://0x0.st/B5k.bin


The only difference between the makefiles that looks interesting is the fact that I'm compiling for 32 bit platform, and you are targetting 64 bit.

Try adding #message on line 120 in Common_inline.h to see if __linux__ is set. Add them to the rest of the blocks too to see which block gets used. On Linux, the definitions specified on lines 128-130 need to be used.


it does the ones from 123-125, so I guess IO_IN_C_FILE was defined.


I think that's normal. It looks like Io has a complex pre-processor mechanism for inline functions depending on whether its included from its "parent" C file or other C file. With your compiler, an edge case that was being ignored before is suddenly causing a problem.

On lines 129 and 130, try changing extern inline to static inline. If this doesn't work, I'll push a version where Io is omitted from praxis by default.



Ok, one more try. Replace Common_inline.h with the newer one from here:




Ok. Just for you, I've pushed a version which has Io (and Forth) off by default for you to try.


awesome, it compiles! I'll try it out later. Thanks for the help/


I am happy to help. I hope you enjoy it!


I mean you're not ranting, you're not venting, you're just asking for feedback.
Lainchan is a community, feel free to ask for feedback. Effective communication is imposible without it.


What weird worlds have you made with this program?
I've installed it but am facing different problems. Damn.


File: 1473392379685-0.png (40.56 KB, 200x58, praxisbug1.jpg)

File: 1473392379685-1.png (44.7 KB, 200x95, praxisbug2.jpg)

After some issues, I've compiled it and it works. Sort of. The program launches in two windows, one smaller screen which ostensibly looks like what it should, and a larger window which is all black. The mouse control all works, but I can't type anything. When I open the window, I can see the error message in the first picture, and when I press any key while the window is selected, it changes to the second message and doesn't seem to change after that.



After doing some testing, it seems like it's trying to read a bunch of files that are in the examples in the prods directory and assuming they're in the main directory. For example, as you can see in the first picture, it's not finding the inspect module, because it's stored in prods/[whatever example]. I copied inspect.lua into the main directory, and it came up with a similar error talking about a different file.

I'm not totally sure what I could do to change the directory in which it's looking for these files. Do you have any suggestions/a bugfix?


Thank you.


The idea is that your current folder is set to one of the prod directories, or your own folder. I suggest making a copy of one of the prod directories to provide you with a starting point. Set the current folder to that before running praxis.

I'm looking at baking some of the foundation functionality written in the startup Lua files into the executable so you can start the executable in an empty folder.


File: 1474645187564.png (8.01 KB, 200x90, praxiserr.png)

Alright, now I'm running it from within one of the testing directories (ie, praxis/prods/LogoTest $ ../../praxis), which seems to fix the not finding the files thing, however, I still get all of those errors when pressing a key (all of the "onKeyDown" stuff, see image 2 in >>18560). Pic related is the new startup error.


Try the other folders.



it built fine but errors out with this when trying to run:

Hello from the input thread.

X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 155 (GLX)
Minor opcode of failed request: 3 (X_GLXCreateContext)
Value in failed request: 0x0
Serial number of failed request: 53
Current serial number in output stream: 54