califax has quit [Remote host closed the connection]
califax has joined #openscad
<InPhase>
kintel: Hearing the description above, I'd endorse doing away with that Windows bundled test zip thing. If it's unused, lacking a clear use case, and a maintenance burden, then it doesn't make too much sense to keep it I guess.
<InPhase>
kintel: Maybe as good courtesy give it a visible removal commit with its own merged PR to assist in finding it again if someone wants to resurrect it.
<InPhase>
kintel: And pr4608 mostly passes my inspection. It picked up my CTEST_PARALLEL_LEVEL environment variable by default, so I unset it, ran again, confirmed it was slow, and then tested out "make test -j8", but it did not shuttle the parameter in there successfully to ctest. I wonder if there is a way to do this? One other thing I'd recommend clarifying is "Once built, you can run tests with make test
<InPhase>
or ctest from the build directory" for your README edit, since it's dislocated from the command above that puts it into the build command.
<InPhase>
kintel: The direct ctest from the build directory behaves as expected.
<InPhase>
kintel: Oh, hmm. And one oddity. I was validating that the old way running within tests still works. It does! But... the two approaches have different outputs, of build/Testing/Temporary/* and build/tests/Testing/Temporary/* Should this be made consistent?
<InPhase>
kintel: Since that list grew... I migrated all that over to the pr4608 thread as some bullet points.
<InPhase>
kintel: You'll notice I focused a lot on parallelization, but this is because on my system the OpenSCAD tests flip from about 1 minute, where my attention doesn't wander, to 8 minutes, where I go off to do something else and forget for a while that I was running tests, based on whether or not I have parallelization on. :) So it really changes my mental workflow.
kintel has joined #openscad
<kintel>
InPhase Thanks for the feedback. Fully agree on parallelization. I was hoping to eventually switch everything to ninja and auto-parallelization. That works well for builds but not yet for tests..
<kintel>
InPhase: Btw. 1 minute? What CPU is that and what's your -j arg?
<InPhase>
kintel: Ryzen 7 4800, 8 cores, -j20, and the run I just did reported back 83s. That's a physicist-scale minute.
<kintel>
That's a good point indeed; users also run optimized binaries :)
J238768 has joined #openscad
drkow has quit [Ping timeout: 255 seconds]
actiondave has quit [Ping timeout: 255 seconds]
<kintel>
58s on -j30 :)
<InPhase>
That's a broad philosophy I tend to push regularly in C++ communities. But because they are C++ communities, not many people listen. ;)
<kintel>
..but 43 _minutes_ on macOS : (
<InPhase>
lol, wow. 43 minutes is a lot.
<kintel>
There are some degenerate OpenGL issues. One day I'll get to it, but I'm taking the slow, bottom-up path
<InPhase>
It would certainly slow down the feedback cycle of fixing problems with tests.
<kintel>
I've found myself ssh'ing into my new PC to do development :)
<InPhase>
I do that at work regularly. Develop on my Linux system, and then transfer the results to the Windows snail, set it building, and go get lunch.
J2387 has quit [Ping timeout: 260 seconds]
<kintel>
InPhase Meh, the Makefile exposes test as a single ctest invocation, so there isn't anything for make to parallelize
<kintel>
workaround: make test ARGS=-j30
<InPhase>
Does the Makefile have a variable for its own parallelization?
J23876830 has joined #openscad
J238768 has quit [Quit: Client closed]
<kintel>
No, it looks like it's generally hard to pull the -j argument out of a makefile invocation
<kintel>
..but we could potentially set MAKEFLAGS=-j20 as an env variable, and see if that could be passed onto ctest with some cmake magic
<kintel>
Not sure it's worth chasing around though
<kintel>
Perhaps rather tone down the docs for "make test", and recommend running ctest from the build dir instead
<JordanBrown[m]>
Memory leaks are a lot easier to detect and debug when the debugger says "you had a memory leak from an allocation at this call stack".
<kintel>
JordanBrown[m] hey, did you ever end up getting tests to run on your Windows/msys2 box again?
<JordanBrown[m]>
Haven't tried.
<JordanBrown[m]>
Between one thing and six others I haven't been doing much OpenSCAD recently - either internals or usage.
<kintel>
Let me know if you get back to it and have motivation to run tests :) As discussed above, we can run all tests in 1 minute on a semi-modern CPU, so that give a nice turnaround time compared to the CI
<JordanBrown[m]>
First I have to get a semi-modern CPU.
<kintel>
heh, I bet the one you have probably beats the CI with some margin ;)
<kintel>
..unless you're like buzz and run OpenSCAD on a 10-year old cell phone
<JordanBrown[m]>
Maybe, but I wouldn't bet on it. It was relatively cheap in 2013.
sauce has joined #openscad
<JordanBrown[m]>
InPhase's Ryzen 74800 scores somewhere around 17-19,000 on PassMark CPU Mark. My A10-6700 scores around 3000.
<JordanBrown[m]>
So it's bigger and consumes more power than a ten-year-old cell phone. Faster... maybe, maybe not.
<peeps[zen]>
*reading scrollback* what's the issue with building tests in parallel? doesn't the test build take like 2s? and during testing, ctest accepts a -j parameter.
<kintel>
peeps[zen] It was about _running_ tests with `make test`
<peeps[zen]>
oh, uh. why would you want to do that?
<kintel>
It was just an idea for how to take the mental model of test runners out of the equation for casual devs; cmake && make && make test
<peeps[zen]>
kintel: i haven't tried your "cmake && make && make test" yet, but just realized that is making an assumption about the cmake generator which I'm not too fond of
<kintel>
..but I've since reverted that to recommending ctest
<peeps[zen]>
cmake && cmake --build . && ctest?
<kintel>
`cmake -GNinja && ninja && ninja test` would work too
<kintel>
..but with the same parallelization issues
<kintel>
cmake --build: Yeah that's probably more correct, just so many characters to type :/
peeps[zen] has left #openscad [Connection reset by peep]
<peeps[zen]>
I just put that in my .bashrc, along with `export CMAKE_GENERATOR=Ninja`
<peeps[zen]>
kintel: 1327 tests failed out of 1502 on your PR. I think its just my graphics driver is being a pain again. gonna try a reboot
peeps[zen] has quit [Quit: Connection reset by peep]
peepsalot has joined #openscad
<peepsalot>
ok, mulitple issues going on. I also forgot to set EXPERIMENTAL=ON, which annoyingly breaks vast 88% of tests i guess
<peepsalot>
its good to test experimental features, but making them mandatory for 88% of tests is pretty bad
<peepsalot>
kintel: testa are all passing for me now, except for the 2 preview w/ edges related
kintel has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
ur5us has quit [Ping timeout: 250 seconds]
<peepsalot>
i've been thinking about writing a little javsacript widget for our test reports, to add some different image comparison options, much like github's has "Swipe" & "Onion Skin" options
<peepsalot>
I'd like another view type to just display difference in images too (actual - expected)
<peepsalot>
or does anyone else care? :P
<InPhase>
peepsalot: In image_compare.py the "s" variable in Compare3x3 is a boolean mask of all 3x3 blocks which are different. Perhaps that would help if you wanted to draw attention to the differences.
<InPhase>
peepsalot: Noting that for a 512x512 image, s is 510x510 in size, as it logically must be.
<peepsalot>
hmm, yeah that's another option. I was thinking a cool thing for the difference view would be a gain slider
<peepsalot>
so you could amplify subtle color differences
<InPhase>
That function will flag all 3x3 consistent color differences more than scale 3 out of 256.
<peepsalot>
InPhase: you mean basically reimplementing your algorithm in javascript or more like having the tests save an intermediate image that the report would also reference?
guso78 has quit [Ping timeout: 260 seconds]
<InPhase>
But, it's two different strategies. One is "trust the magic function, and help people spot what it is finding". The other is "provide an alternative view that can spot other stuff".
<InPhase>
Oh, I was thinking it could save an intermediate.
<peepsalot>
ah ok, cause maintaining multiple algorithm translations sounds like a pain, even if it is relatively simple :P
<InPhase>
It wouldn't be too tough to reimplement if you wanted, but yeah, best to centralize. :)
<peepsalot>
but that would also raise the report size a bit, since all images are embedded as base64 data:uri
<InPhase>
Well only for failing ones, right?
<peepsalot>
I guess it could potentially output a 1bit image of the 3x3 masks which would compress well
<peepsalot>
yeah only failing, but its not out of the question to end up with reports having nearly every test failing
<peepsalot>
though when that happens its also often because the "actual" images weren't generated at all
germ has quit [Read error: Connection reset by peer]
germ has joined #openscad
califax has quit [Ping timeout: 255 seconds]
califax_ has joined #openscad
califax_ is now known as califax
kintel has joined #openscad
<kintel>
peepsalot Options for helping spotting diffs would be cool. At work I tend to use the one that just flips between the two images every second, as I've found that stands out really well.
<kintel>
In terms of the "view edges" test failures. I'll get that sorted as well, as a separate PR, as that's now starting to pop up in the wild. This was always the plan, I just wanted someone else to experience it first
<Scopeuk>
commercial software but beyond compares image comparison tools are pretty impressive. probably rather over kill for what we want though
<Scopeuk>
there may be open alternatives out there, I'm not as familiar with them though
<kintel>
I haven't seen anything better than what we have in the industry though, in terms of image-based regression tests
<kintel>
I'm sure there must be something in the are of visual inspection QA of physical parts etc., but I haven't work in such places : /
<Scopeuk>
regression tests is the key. the tools I have used are for interactive interrogation. regression testing images is hard and we have a fairly solid test suite for it
<kintel>
Anything freely or commercially available that we could get ideas from?
<Scopeuk>
for interactive compare "beyond compare" https://www.scootersoftware.com/ has a pretty powerful suite letting you have a and b images and then a comparison panel with multiple modes along with scaling/sizing/positioning but it is a desktop application. it has a free trial if you wanted to have a look how it behaves. not sure I have any image
<Scopeuk>
regressions tools in my repertoire
<kintel>
Mostly interested in automated regression test approaches :)
<Scopeuk>
that's fair. I'm interested in it. I have tried looking for this stuff from an automatic testing of UI stuff briefly but the "state of the art" seams to be very platform specific
<kintel>
I wouldn't mind UI tests either, but that's a crazy universe to enter
<kintel>
squish by froglogic used to be a shining star in the Qt world, but commercial and with only limited availability to OSS project through a KDE license I think
<kintel>
peepsalot Yeah, I've also noticed that we let experimental features creep a bit (too) deeply into our tests. I guess this was initially well-meant as a way of giving fast-csg some good tests. ..but this is not cool, as I expect most users to use the default settings which are now less tested than before.
kintel has quit [Read error: Connection reset by peer]
kintel has joined #openscad
kintel has quit [Client Quit]
fedorafan has quit [Ping timeout: 240 seconds]
fedorafan has joined #openscad
castaway has joined #openscad
guso78 has joined #openscad
snaked has quit [Quit: Leaving]
fedorafansuper has joined #openscad
fedorafan has quit [Ping timeout: 252 seconds]
<juri_>
fwiw, for these kinds of tests in implicitcad/hslice, i just md5sum the output files.
<Scopeuk>
the objective here is to detect "meaningful" changes to the output files, a 100% exact match is awsome but with parts of the rendering engine there is slight dither etc depedning on the gpu driver used (particularly with the preview system)
<juri_>
i typically do a full point release any time something changes the output STLs in ImplicitCAD. that's the nice part about having no users: no-one complains when i delay things to do it right. :)
<juri_>
you could trop the output into a slicer, and diff the gcode instead.
<juri_>
after all, the largest precision drop in a 3d printer chain is the 5 digits after the . in gcode.
aiyion1 is now known as aiyion
fedorafansuper has quit [Ping timeout: 256 seconds]
<Scopeuk>
this is mostly the image tests rather than the stl's
<Scopeuk>
there is a lot of floating point madness going on with set viewport position, set model position etc
<Scopeuk>
but yes bieng small grants a lot of freedom
<Scopeuk>
and also being the "single source of truth" for the project. no stake holders. I do not envy anyone trying to maintain a large scale project
fedorafan has joined #openscad
<juri_>
problems you want. ;)
<Scopeuk>
whilst it would be awesome to create something and have "everyone" want it I'm not sure I have the bandwidth or motivation to deal with people
kintel has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
kintel has joined #openscad
<Scopeuk>
now if someone can just write a native js interpreter for hte raw hardware one of the things qemu emulates we can find a way to make chrome use even more ram
guso78 has joined #openscad
<teepee>
isn't that jslinux like 15 years old or something?
<teepee>
also we need to rewrite everything in rust now
<teepee>
> In 2011 I wrote the initial version of JSLinux, the first PC/x86 emulator in Javascript running Linux. I reused parts of another of my emulators (QEMU) for the x86 helpers and the devices.
<teepee>
probably debug info, that really can blow up compile output to gigabytes
J23 has quit [Quit: Client closed]
Guest3747 has joined #openscad
J23 has joined #openscad
Guest3747 has quit [Client Quit]
guso78 has quit [Ping timeout: 260 seconds]
ur5us has joined #openscad
teepee_ has joined #openscad
teepee has quit [Ping timeout: 255 seconds]
teepee_ is now known as teepee
castaway has quit [Ping timeout: 260 seconds]
peeps[work] has quit [Quit: Leaving]
peeps[work] has joined #openscad
pharonix71 has quit [Remote host closed the connection]
L29Ah has joined #openscad
ndnihil is now known as d-fens
d-fens is now known as ndnihil
fedorafan has joined #openscad
fedorafansuper has quit [Ping timeout: 246 seconds]
fedorafansuper has joined #openscad
fedorafan has quit [Ping timeout: 248 seconds]
J23 has quit [Quit: Client closed]
J23 has joined #openscad
Lucas22 has joined #openscad
Lucas22 has quit [Write error: Broken pipe]
Lucas123 has joined #openscad
<Lucas123>
Hi, are there any OpenSCAD developers here?
Lucas12329 has joined #openscad
<buZz>
any are
<buZz>
dont ask to ask, just ask
<Lucas12329>
I was thinking about a project that would require compiling openscad to a triangle mesh
<Lucas12329>
preferably quite quickly
<Lucas12329>
and without the whole GUI thing
<Lucas12329>
how easy would it be to just pull the core geometry calculation functionality and include it in another project?
Lucas12312 has joined #openscad
Lucas123 has quit [Ping timeout: 260 seconds]
<teepee>
Lucas12329: that's what openscad does ;-)
<teepee>
there's not specifically a library build, but the path scad-script -> mesh is possible via command line so it might be not too difficult to hook it into a different project
Lucas123 has joined #openscad
<teepee>
actually that could benefit the WASM version too I think
Lucas12329 has quit [Ping timeout: 260 seconds]
<teepee>
now the question is if there's any Lucas here :D
<Lucas123>
yeah
Lucas12369 has joined #openscad
<teepee>
so you missed part of the answer, maybe just click the logs link in the title
Lucas12312 has quit [Ping timeout: 260 seconds]
<Lucas12369>
trying to find that
Lucas123 has quit [Ping timeout: 260 seconds]
Lucas12369 has quit [Ping timeout: 260 seconds]
Lucas123 has joined #openscad
<Lucas123>
seems none of what I just wrote sent
Lucas12334 has joined #openscad
<Lucas12334>
I'll have a look and see if I can make a fork that strips out everything I don't want
<Lucas12334>
will just find the command line interface bit and start deleting from there
<teepee>
using the headless flag should give you most of the changes already
<Lucas12334>
though 27MB isn't too bad, might just shove the whole thing in
<Lucas12334>
every compile is from scratch right?
Lucas12383 has joined #openscad
<teepee>
in command line mode, yes currently
<teepee>
gui uses a cache, but persistent cache is still an open PR
<Lucas12383>
are there optimisations when using the GUI
<Lucas12383>
is the lack of a persistent cache related to the incompatability I found with dropbox
Lucas123 has quit [Ping timeout: 260 seconds]
<teepee>
not that I know of, it nobody had the time to finish up things
<teepee>
there are some open issues with links and volumes on windows, I don't know if those are connected to dropbox issues
Lucas12334 has quit [Ping timeout: 260 seconds]
Lucas123 has joined #openscad
<Lucas123>
dammit libra
<linext>
i found a case yesterday where manifold rendering failed and cgal worked
<teepee>
seems to be some very angry network going on :)
<teepee>
linext: very last version?
<linext>
2023.03.30
Lucas12314 has joined #openscad
<teepee>
yep, too old :)
<Lucas12314>
anyway, that's given me a place to start, would stay and chat but I'm getting pretty frustrated
<teepee>
yep, hopefully that helps, although I have not seen it that bad
<anotherlucas[m]>
could be my end
<anotherlucas[m]>
though doesn't seem so
<InPhase>
Yeah, IRC does require a connection without regular drop outs.
<anotherlucas[m]>
I just did 8hrs of zooming, and that was fine
<InPhase>
Web browsing can end up not noticeably affected by this sort of thing, and many other services reconnect more gracefully.
<teepee>
those things usually don't even do connects :)
<anotherlucas[m]>
did you ever use thigniverse when it supported parametric models?
<anotherlucas[m]>
any idea how they hooked it in?
<teepee>
server process, a very old earlier version of the code is still hanging around on github
<anotherlucas[m]>
using the aforementioned headless option?
<teepee>
people still do that, like cadhub.xyz (down currently) and models@makewithtech
<teepee>
I don't know, could be a normal build
<JordanBrown[m]>
teepee: Web browsing does connects... but generally not for very long.
<teepee>
web browsing yes, I meant video conferencing
<JordanBrown[m]>
anotherlucas: I have been very happy with Matrix. It doesn't care if I drop out. I can I turn the computer off, and when I turn it on I can read what people wrote.
<teepee>
actually I'm not sure the old versions thingiverse used/uses had headless working
<JordanBrown[m]>
teepee: Sorry, sometimes it's hard to tell exactly what a response is to.
<teepee>
no worries :)
<anotherlucas[m]>
So, just to fill you in on what I'm thinking about doing, I'm thinking of putting a general parametric shape model into some physics software I work on