Systems supported for running scriptsΒΆ

  • Windows 10 (version 1903 aka 19H1, or later), or Windows 11, either 32-bit or 64-bit.

  • macOS AMD/Intel or Apple Silicon (Big Sur 11.0 or higher).

  • Linux AMD/Intel 64-bit with glibc 2.27 or higher.

    • You will need the following system tools installed:

      • tar, wget or curl, git, unzip
      • libssl-dev (Debian, Ubunutu) or openssl-devel (RedHat)
      • ninja (this requirement will be removed)
      • If any are missing you will be asked if dk can install them the first time you run ./dk from the command line.
    • For graphics you will need one of:

      • X11 with a direct OpenGL driver.
        • A good prereq test is running glxgears (ex. yum install glx-utils; glxgears). If that works, dk graphics should work.
        • Don't expect the LIBGL_ALWAYS_INDIRECT=1 environment variable to work. That is sometimes recommended when forwarding X11 with ssh -X or into a Docker container, but it forces the protocol to be a too-old OpenGL version 1.4 .
      • Wayland. Set the environment variable SDL_VIDEODRIVER=wayland to force it.
      • Linux Direct Rendering Manager. If supported, you will have a /dev/dri/card0. Set the environment variable SDL_VIDEODRIVER=kmsdrm to force it.

Systems supported for deploying shared librariesΒΆ

Shared libraries can be created in a limited, private beta in dk 2.3.

  • Windows 10 (version 1903 aka 19H1, or later), or Windows 11, either 32-bit or 64-bit.

  • macOS AMD/Intel or Apple Silicon (Big Sur 11.0 or higher).

  • Linux AMD/Intel 64-bit with glibc 2.27 or higher.

    • You will need the following system tools installed:

      • tar, wget or curl, git, unzip
      • libssl-dev (Debian, Ubunutu) or openssl-devel (RedHat)
      • ninja (this requirement will be removed)
      • If any are missing you will be asked if dk can install them the first time you run ./dk from the command line.
    • For graphics you will need one of:

      • X11 with a direct OpenGL driver.
        • A good prereq test is running glxgears (ex. yum install glx-utils; glxgears). If that works, dk graphics should work.
        • Don't expect the LIBGL_ALWAYS_INDIRECT=1 environment variable to work. That is sometimes recommended when forwarding X11 with ssh -X or into a Docker container, but it forces the protocol to be a too-old OpenGL version 1.4 .
      • Wayland. Set the environment variable SDL_VIDEODRIVER=wayland to force it.
      • Linux Direct Rendering Manager. If supported, you will have a /dev/dri/card0. Set the environment variable SDL_VIDEODRIVER=kmsdrm to force it.
  • Android ABI armeabi-v7a, arm64-v8a or x86_64. The ARM processors must support the Neon extension (ARM Advanced SIMD) when deploying with the armeabi-v7a ABI. Almost all armeabi-v7a ABI devices support the Neon extension .

Runtime systemΒΆ

The dk executable and ./dk wrapper script are the primary coding tools for the dk coder.

With dk or ./dk, your scripts will have access to the following libraries:

  • curl
    • All OSes:
      • Brotli and zstd compression
      • Asynchronous DNS resolution
      • HTTP/2
      • Websockets
    • Windows: Schannel TLS backend (Microsoft CryptoAPI) and WinIDN domain name resolution
    • macOS: Secure transport backend (Keychain) and IDN2
    • Linux: Openssl is required from the operating system. dk does not provide it.
  • SDL2
    • Windows: Audio mixer supports the WAV format.
    • macOS: Audio mixer supports the WAV format.
    • Linux: Audio mixer supports the WAV format. D-Bus and ibus IME are supported.

The DkCom_Build.Shared module that is available in a private beta can create shared libraries; those shared libraries have access to all of the above libraries and additionally support:

  • curl
    • All OSes:
      • Brotli and zstd compression
      • Asynchronous DNS resolution
      • HTTP/2
      • Websockets
    • Windows: Schannel TLS backend (Microsoft CryptoAPI) and WinIDN domain name resolution
    • macOS: Secure transport backend (Keychain) and IDN2
    • Linux: Openssl is embedded.
  • SDL2
    • Windows: Audio mixer supports the WAV format.
    • macOS: Audio mixer supports the WAV format.
    • Linux: Audio mixer supports the WAV format. ibus IME is supported but not D-Bus.
    • Android: Audio mixer supports the FLAC and Opus and OGG (through Opus) formats.