
Security News
Follow-up and Clarification on Recent Malicious Ruby Gems Campaign
A clarification on our recent research investigating 60 malicious Ruby gems.
Oozby (Oozebane + Ruby) is inspired by the realisation that OpenSCAD does not support real variables, and so it is more like a markup language than a programming language. Oozby uses all the same familiar functions as OpenSCAD, but with the clear and sensible grammar of the Ruby programming language. Oozby also patches in lots of useful features. Check out the examples
folder to see some great demos of some of Oozby's abilities.
Here are some highlights:
r
parameter like sphere
, circle
, cylinder
, you can specify any of these instead:r
, radius
r1
, radius_1
, radius1
r2
, radius_2
, radius2
d
, dia
, diameter
: anything specified as diameter will be automatically halved, taking a lot of / 2.0
statements out of your coded1
, dia1
, dia_1
, diameter1
, diameter_1
, d2
, dia2
, dia_2
, diameter2
, diameter_2
cylinder
and linear_extrude
can take height
instead if you likeradius
option, which if > 0.0
causes the corners to be rounded very cleanly.translate(x: 5, y: 6)
- unspecified items default to 0scale(y: 2)
- unspecified items default to 1 for scale. Smart!center: true
! How many times have you had to write center = true
again and again when constructing something with lots of symmetry in OpenSCAD?This tool is considered very experimental at the moment and could break in horrible ways. There is a good chance the API will change and break stuff until the gem hits 1.0, but hey, get on board and lets figure out how to make OpenSCAD less horrible. Maybe if we come up with really great ideas in Oozby that will give the OpenSCAD devs a clear direction forward for new syntaxes and features in the future - kind of the same idea as rubinius and pypy! A place to quickly prototype kooky ideas.
Oozby is not a language translator and doesn't try to be. It is a markup builder like Markaby or XML Builder, so you should expect it's output to sometimes be not very readable and unnecessarily verbose. Your variables and maths are all rendered by Oozby, and as a result Oozby cannot and probably never will be able to generate dynamic modules which can be used from OpenSCAD files. Of course, you can use Oozby libraries from inside other Oozby scripts! And it probably wouldn't be too difficult to implement the OpenSCAD language in Oozby itself, so it could automatically convert OpenSCAD in to Oozby and in that way allow OpenSCAD files to call on Oozby libraries.
Another note: Oozby uses regular ruby maths, and that means if you're not working entirely in whole millimetres you may encounter a little bit of floating point rounding. You should try to make surfaces intersect, not just come up against each other's edges exactly. Anything that wouldn't look right rendered by the quick opengl preview mode of OpenSCAD might not work properly with full CGAL renders. Also note that in ruby 5 / 2 = 2
. If you want 2.5
, make one of the operands a Float, so 5 / 2.0 = 2.5
or 5.0 / 2 = 2.5
or 5.0 / 2.0 = 2.5
. We could use refinements to patch the oozby environment so 5 / 2 = 2.5
but that would be weird for existing Ruby users. Not sure what to do here.
FAQs
Unknown package
We found that oozby demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
A clarification on our recent research investigating 60 malicious Ruby gems.
Security News
ESLint now supports parallel linting with a new --concurrency flag, delivering major speed gains and closing a 10-year-old feature request.
Research
/Security News
A malicious Go module posing as an SSH brute forcer exfiltrates stolen credentials to a Telegram bot controlled by a Russian-speaking threat actor.