5 ms·
What is a well defined "scripting" language? Lua, Python, Ruby? I do agree it'd be nice with a more general purpose language and a lib like you say, but should
by carlhjerpe 6y ago
What is a well defined "scripting" language? Lua, Python, Ruby?
I do agree it'd be nice with a more general purpose language and a lib like you say, but should this lib be implemented in rust/c so that people can easily integrate it into their own language?
Many unknowns but great idea.
- jayd16 6y agoThey probably mean an interpreted language or at least something distributed as text. But honestly, you could come up with some JIT scheme for any language, most likely.
- tremon 6y agoI'd say it's not about the capabilities of the language, but the scope of the environment. You need a language to orchestrate your builds and tests (which usually means command execution, variable interpolation, conditional statements and looping constructs), and you need a language to interact with your build system (fetching code, storing and fetching build artifacts, metadata administration). Lua would be a good candidate for the latter, but its standard library is minimal on purpose, and that means a lot of the functionality would have to be provided by the build system. Interaction with the shell from Python is needlessly cumbersome (especially capturing stdout/stderr), so of those options my preference would be Ruby. Heck, even standard shell with a system-specific binary to call back to the build system would work.
- oblio 6y agoPeople hate on it, but do you know what language would be perfect these days? Easy shelling - check. Easily embeddable - check Easily sandboxable - check. Reasonably rich standard library - check. High level abstractions - check. If you're still guessing what language it is, it's Tcl. Good old Tcl. It's just that is syntax is moderately weird and the documentation available for it is so ancient and creaky that you can sometimes see mummies through the cracks. Tcl would pretty much solve all these pipeline issues, but it's not a cool language. I really wish someone with a ton of money and backing would create "TypeTcl" on top of Tcl (à la Typescript and Javascript) and market it to hell and back, create brand new documentation for it, etc.
- mumblemumble 6y agoHow is the Windows support? One of my big needs for any general-purpose build system is that I can get a single build that works on both Windows and POSIX. Without using WSL. That said, you're right, at least at first blush, tcl is an attractive, if easy to forget, option.
- oblio 6y agoWindows support? Great as far as I can tell. ActiveTcl, the Windows distribution, has been a thing for several decades now. I remember using it back in 2008.
- ptx 6y agoThe IDE/editor that ships with Python for Windows is built on Tkinter, which is a wrapper for Tcl/Tk. So it seems to work fine.
- imtringued 6y agoI'd rather see an Lua successor reach widespread adoption. Wren pretty much solved all my gripes with Lua but there is no actively maintained Java implementation.
- blacksqr 6y ago> I really wish someone with a ton of money and backing would create "TypeTcl" They did. Larry McVoy of BitMover created Little, a typed extension of Tcl [0]. Didn't do the marketing bit, though. [0] https://wiki.tcl-lang.org/page/Little https://wiki.tcl-lang.org/page/Little
- oblio 6y agoTcl. We already have that language and it's been around for decades, but it's not a cool language. Its community is also ancient, and it feels like it.
- karlicoss 6y agoLiterally any real language would be better. Even if I have to learn a bit of it to write pipelines, at least I'll end up with some transferable knowledge as a result. In comparison, if I learned Github Actions syntax, the only thing I know is... Github actions syntax. Useless and isolated knowledge, which doesn't even transfer to other YAML-based systems because each has its own quirks.
- mxcrossb 6y agoOn the theme of the posted article “Literally any real language would be better” is how I feel every time I write cmake/auto tools/etc
- orthoxerox 6y agoKotlin. It has good support for defining DSLs and can actually type check your pipeline.