
@jbclements Check npm to see whether there are an existing “display binary tree” widget. I think the odds are in your favour.


when compiling to an exe file, if you don’t use raco exe --embed-dlls playsound.rkt
on windows, the resulting exe wont be able to run on other windows machines that don’t have racket installed right?

PS D:\> raco exe --embed-dlls htdp2_game.rkt
open-output-file: error opening file
path: D:\htdp2_game.exe
system error: The process cannot access the file because it is being used by another process.; win_err=32
context...:
C:\Program Files\Racket\collects\compiler\embed.rkt:1562:6
C:\Program Files\Racket\share\pkgs\compiler-lib\compiler\commands\exe.rkt:100:0
body of "C:\Program Files\Racket\share\pkgs\compiler-lib\compiler\commands\exe.rkt"
C:\Program Files\Racket\collects\raco\raco.rkt:41:0
body of "C:\Program Files\Racket\collects\raco\raco.rkt"
body of "C:\Program Files\Racket\collects\raco\main.rkt"
htdp2_game.rkt
source: #lang racket/base
(require 2htdp/image)
(require 2htdp/universe)
(println "hello world")
is it already known that raco exe --embed-dlls htdp2_game.rkt
doesn’t work? Without the --embed-dlls
it works fine though

To make an executable work on other platforms, in general you should use raco dist
to package the result of raco exe
. But on Windows, using --embed-dlls
will typically also make the executable work elsewhere.
The error above when using --embed-dlls
looks like a problem where htdp2_game.exe
is still running, so the file can’t be replaced.

For those interested in Rhombus, we’ve turned on the GitHub discussions feature at https://github.com/racket/rhombus-brainstorming/discussions

If I understand correctly, many packages require additional files using define-runtime-path
, and these files are still referenced from their original locations (making the executable run only on the local machine). raco dist
will also package these files to be referenced from the dist directory.
For example, if you use the gregor
package on windows, it will reference the tzdata
package which contains timezone information files. A program that uses gregor
will need a dist step even if --embed-dlls
is used when creating the executable.
To me it means that
> But on Windows, using --embed-dlls
will typically also make the executable work elsewhere. should probably read:
> But on Windows, using --embed-dlls
will make the executable work elsewhere in some limited situations. Am I wrong?

racket cant handle pasting in svgs unlike jpegs right? i would have to export that to a png?