The free forever Open Source "get started" button ...
# cfml-general
p
The free forever Open Source "get started" button takes me to a checkout to buy something...so free? https://boxlang.io/plans
e
I want the source code, if its open source.
p
I am guessing its just a bad link on the site, otherwise you have to buy something to use the language.
b
Oops, yes that's a bad link!
We JUST released the site last night and you may find some issues
👍🏻 1
We're working on fixing that link right now
The open source repo is here https://github.com/ortus-boxlang/BoxLang
p
Thanks Brad
e
@bdw429s Ty Brad.. Figured it was an oops.
b
You can download the jar and play with CLi scripting (BL has no web concept in the core) or there are CF engines for CommandBox, but you'll need the
commandbox-boxlang
module installed
e
The BoxLang site unfurls with the wrong site description i think. maybe... who knows. A conventions-based modern HMVC framework for ColdFusion ( CFML )
b
Ahh, thank you so much. It has been a whirlwind getting these sites ready but not public and and I'm sure there are a bunch of things we'll need to fix
👍 1
g
I would be interested more detailed information. How much code of current CF projects already transpiles/runs e.g. Contentbox in/on Boxlang?
b
We have "working" versions of • TestBox • ColdBox • FW/1 • CFWheels • FuseBox (I don't recall if this was 100% working or not-- John Wish was testing)
ContentBox is not running because ORM is still in progress
g
good to know
sounds promissing
b
The best thing is to run the feature audit CLI tool and report back • any files that don't parse • the CSV report of any missing BIFs or Tags
g
any performance stats so far?
b
We are still working on getting the docs up for the feature audit, but I can copy paste some info here
Startup times for the runtime are about 200 ms. Compilation is quite slow right now because we're going through Java source code, but direct bytecode via ASM is in progress already
I haven't done any recent numbers (or perf tuning) but once the class files are cached, the runtime is very fast
g
What exactly is the commandline generator?
p
I believe a lot of this new stuff is going to take some adaptation with lots of new lingo that isnt familiar in this community like ASM, BIFS etc
b
That's great question-- I'm not what our marketing team was referring to there, lol
I'm thinking they meant the tooling to precompile CF/BL code to deployable bytecode, but I also thought that was going to be a free feature, so we'll have to review and and confirm
g
My guess was that it maybe translates CF to BL (source files)... which should be free at least if you want to have some people swtiching
s
@bdw429s The "working" versions of FW/1 and Fusebox -- did those require changes, do you know? FW/1 has a new maintainer now and that project is likely to become active again so it would be nice to have any changes kept in sync with the main repo...
b
John Wish was on our prerelease program and headed up testing FW/1 and FuseBox. I don't know how complex of an app he was testing FW/1 on, but I think he got it working without needing to change the code.
s
@bdw429s Good to know. I wonder what it would take to get cfmljure working with BoxLang? As you may remember (from my loud complaints), when Lucee decided to go OSGi, my Clojure/CFML integration couldn't be made to work with that and so we got stuck on Lucee 4.5, which also meant we got stuck on Java 8. And that accelerated our rewrite plans to switch everything to Clojure. However, we have one small legacy CFML app still running on Java 8 / CommandBox / Lucee 4.5 / ColdBox 3(!) so moving it to BoxLang (and JDK 21, which we're using for everything else) might be worth some small amount of effort for us...
How does BoxLang handle adding/using extra Java libraries? Please tell me "not OSGi" 🙂
b
Heh, we chose not to use OSGI. I liked it when Lucee used it, but having seen the startup overhead, disk bundle cache, and complexity, we didn't want to use it (Knowing what we know now). Our module system (akin to Lucee extensions, but designed more like ColdBox modules) basically have a dedicated class loader for each module. We're avoiding all the dependency management stuff OSGI tries to address for now. For a CommandBox server, you'll have the libdirs setting, which adds those jars to the URLClassLoader used to load the servlet WAR. We're still early in the phase of runtime features, but we'll support
Application.cfc
this.javaSettings
which just uses a custom classloader. I don't recall the details of how cfmljure was implemented, but I think it would be great to use it as a use case to make sure we support. One of our focuses is JVM integrations.
s
cfmljure
adds a DCL on the fly and adds entries to it -- so as long as you're not using OSGi, I'd expect it to "Just. Work." Might give it a try...
👍 1
b
Yep, the core language constructs are very far along and we have a dual ANTLR parser setup for • CFML • BoxLang which allows us to iterate new ideas in boxlang without muddying CFML. Either parser generate the same AST which is compiled to bytecode. There is a CLI tool which will parse your code and tell you what BIFs or tags you're using which we don't support yet.
We still have a lot of peripheral features to tackle-- orm, PDF, zip, etc.
We're 8 months in and there's a lot of surface area to cover in CF for compat!
s
That's a long time to be in stealth mode -- congrats on keeping it all under wraps!
🥷 3
👍🏼 1
👍 2
I'll see what BoxLang makes of our code...
b
Yes, please. Do note it's rough around the edges in many places -- we started from scratch and it's been 8 months of crazy development but there's a lot done and log anything you run into so we can get it addressed.
Even though the core is NOT a web based language, it's just a scripting lang, the web runtime bundles in the servlet bits. The easiest way to get going right now is to use our new
boxlang
cfengine for CommandBox, just make sure
commandbox-boxlang
is installed in CommandBox and you ask it for JDK 17
s
We're running on JDK 21 for everything by default at this point...
@bdw429s The download link for the
-web.jar
is a 404
g
I have so many questions about Boxlang, maybe I should watch the keynote, but here goes • why start from scratch? • why use a freeium license model? • what are premium modules going to be? • why licence premium per node? • will you continue to support lucee extensions / contribute to the CF / Lucee community ?
👍 1
s
@Gareth A lot of that seems to be answered in the other thread -- especially in this post from @bdw429s https://cfml.slack.com/archives/C06T99N9G/p1715870569273719?thread_ts=1715866426.420309&cid=C06T99N9G
b
@seancorfield I'm in my way to the airport. I'm flying home early to attend my daughter's graduation. I think boxteam.ortussolutions.com is our sign up link. You can also use the new boxlang topic on discourse or the box products channel.
👍 1
@gpickin can you check those download links? They were working last night
Community.ortussolutions.com is our discourse forum BTW.
s
That URL doesn't work. You get redirected to this and it only supports three domains:
b
Ok, sorry. @gpickin should know the signup URL too or can invite you
s
The downloads page https://boxlang.io/download#runtimes seems to work for downloading the web JAR. This page seems to have the wrong URL for the web JAR: https://boxlang.ortusbooks.com/getting-started/installation/binaries @gpickin
✅ 1
g
whats the licensing agreement for using Oracle Java with Boxlang ? I think Lucee uses OpenJDK and I think Adobe license Oracle JDK ?
l
We use openjdk
❤️ 1
But you can use whatever idk you want and license
s
@Gareth Outside the CF world, it's normal to deal with the JRE/JDK separately -- user selects the JVM env they want (within some version guidelines for the product) and then user installs/runs the JVM-based product.
👍 1
We use the Adoptium Temurin JDKs for everything at work (and we're on 21.0.3 in production).
👍 1
g
I use Temurin locally
a
https://cfml.slack.com/archives/C06T99N9G/p1715889651951099?thread_ts=1715869199.068969&cid=C06T99N9G I haven't tested everything but simple skeleton versions of FW/1, DI/1 & AOP/1 I got running. Fusebox doesn't currently fully work (XML or noXML versions) but in fairness the "direct off github" version doesn't work on latest ACF or Lucee (due to a
getCanonicalPath
function name clash). CFWheels is partially working, you will need the compat module though, there are some things breaking which I haven't been able to reproduce as standalone examples for Brad and co to use as unit tests.
👍 1
I haven't tested cfmljure... yet! Not been feeling well for the last couple of weeks so I have been slacking ab bit with testing / raising issues.
g
@bdw429s @seancorfield when heroku we used slack’s tool which worked, but now they changed it… again, so I will build an inviter. I invited you manually Sean. And updated that link
s
@aliaspooryorik (and others) -- I have a modified version of
cfmljure
working with BoxLang now. It required updating the (somewhat sketchy) Java interop in the CFML code to work with JDK 9+. I need to figure out how out of sync the public
cfmljure.cfc
code is from our own internal version at work (since we added some extra features) but here's a sample:
Copy code
BoxLang> clj = new cfmljure(project="/home/sean/boxlang",clojure="clojure -Spath");
cmd: JAVA_OPTS= clojure -Spath
cp: /home/sean/.m2/repository/org/clojure/clojure/1.12.0-alpha11/clojure-1.12.0-alpha11.jar
cp: /home/sean/.m2/repository/org/clojure/core.specs.alpha/0.2.62/core.specs.alpha-0.2.62.jar
cp: /home/sean/.m2/repository/org/clojure/spec.alpha/0.3.218/spec.alpha-0.3.218.jar
cp: src/
Detected Clojure 1.6 or later (API)
Falling back to clojure.walk for interop
About to install clojure.core...
Detected Clojure 1.10 or later (serialized-require)
About to install clojure.walk...
boxgenerated.boxclass.Cfmljure$cfc@6ab4a5b
BoxLang> app = {};
{}
BoxLang> clj.install(["hello"],app);
About to install hello...

BoxLang> clj.clojure.core.println("Hello, BoxLang");
Calling: clojure.core/println , Hello, BoxLang
Hello, BoxLang

BoxLang> app.hello.greet("BoxLang");
Calling: hello/greet , BoxLang
Hello, BoxLang!
for a Clojure project that just has a
hello
package with a
greet
function.
👍 10
👍🏻 1