redtamarin logo

Software Development Kit

How the RedTamarin SDK is organised

The RedTamarin SDK is mainly a directory structure
distributed as a zip file.

The structure is made in such a way that we can distribute
at the same time and on different platforms

  • libraries shared by different platforms
  • binaries specific for the current platform
  • binaries targeted at a specific platform other than the current
  • binaries compiled with and without debugging informations
  • binaries in both 32-bit and 64-bit

The SDK support 3 main platforms

  • windows
  • macintosh
  • linux

Directory structure (example with the Macintosh SDK)

(root)
   |_ 0.4.1T174
   |_ bin
   |_ doc
   |_ lib
   |_ lib-abc
   |_ lib-swc
   |_ runtimes
   |      |_ avmshell
   |      |      |_ macintosh
   |      |             |_ 32
   |      |                 |_ avmshell-release
   |      |                 |_ avmshell-debug
   |      |                 |_ avmshell-debug-debugger
   |      |
   |      |_ redshell
   |             |_ macintosh
   |                    |_ 0.4.1T174
   |                    |_ 32
   |                    |   |_ redshell
   |                    |   |_ redshell_d
   |                    |   |_ redshell_dd
   |                    |
   |                    |_ 64
   |                        |_ redshell
   |                        |_ redshell_d
   |                        |_ redshell_dd
   |      
   |_ tools-abc
          |_ redbean
                |_ doc
                |_ redbean.abc

0.4.1T174

Tagged version of the SDK.

{major}.{minor}.{tag}

You will find it at the root of the SDK
and in the root of the redshell runtime for a particular platform.

We adopted a specific versioning which allow us
to sync different builds on different platforms.

The tag is always incrementing
and unique for each release.

{serie}{cycle}{build}
   |      |      |_ 3 digits from 000 to 999
   |      |_ 1 letter from A to Z
   |_ 1 digit from 0 to 9

We started to work on the current RedTamarin
at version 0.4
at tag 1R000 (serie 1, cycle R for RedTamarin)

Here how to read and follow this tag

  • we started at 1R000
  • at 1R999 we incremented the cycle to S
  • we had an internal release at 1S540
  • at 1S999 we incremented the cycle to T
  • we had another internal release at 1T000
  • we made a public release at 1T174

for "big changes" we can either increment
the versions major and/or minor
but we can also increment the serie.

If we reach 1Z999 the serie and cycle
will automatically increment to 2A000.

Each redshell executable contains this tagged version

$ ./redshell
You must provide input files, -repl, or -Dselftest, or the executable must be a projector file.
avmplus shell 2.1 release build cyclone

Description: redtamarin-0.4-beta[1T174]
...
$ ./redshell_d
You must provide input files, -repl, or -Dselftest, or the executable must be a projector file.
avmplus shell 2.1 debug build cyclone

Description: redtamarin-0.4-beta[1T174]
...
$ ./redshell_dd
You must provide input files, -repl, or -Dselftest, or the executable must be a projector file.
avmplus shell 2.1 debug-debugger build cyclone

Description: redtamarin-0.4-beta[1T174]
...

You can also access this description and tagged version trough code

import shell.Runtime;

trace( "desc: " + Runtime.description ); // desc: redtamarin-0.4-beta[1T174]
trace( "tag: " + Runtime.redtamarin );   // tag: 0.4.1T174

bin

The bin folder contains pre-compiled binaries for your platform.

By default we distribute binaries in 32-bit.

It could evolve that for specific systems we provide either
scripts to upgrade to 64-bit or directly the 64-bit binaries.

doc

The doc folder contains the HTML documentation generated by asdoc.

We will not release a new SDK for documentation updates,
you can find those updates online: docs.redtamarin.com

lib

The lib folder contains libraries shared by different platforms.

This folder is mainly about "system" libraries
and/or non-redtamarin (or non-avm2) libraries.

lib-abc

The lib-abc folder contains RedTamarin libraries shared by different platforms.

Even if this folder looks pretty much empty now,
it is supposed to grow and get filled with pre-compiled libraries.

for example:

  • cgi.abc
  • http.abc
  • zip.abc
  • etc.

If a library were to depend on one or other libraries
those dependencies should be published also into lib-abc

Ideally, we should also make a "package manager"
to install/remove/update those libraries and their dependencies.

lib-swc

The lib-swc folder contains Flash Platorm libraries shared by different platforms.

for example:

  • cgi.swc
  • http.swc
  • zip.swc
  • etc.

Currently a SWC in the RedTamarin SDK context should serve for syntax completion only.

Later on, we should be able to use SWC the same way we use ABC
either by "magically extracting" the ABC fromn the SWC
or by integrating ASC2.

runtimes

The runtimes folder contains all binaries executables considered "runtimes",
that is basically any redshell for any platforms in any format.

This folder also contains avmshell binaries but we don't maintain or update them,
they are only used to help build RedTamarin.

This folder is considered "upgradeable".

When you download a RedTamarin SDK, it contaisn only the binaries for your platform.

You can then download additional binaries and "install" them in this folder.

Ideally, a "package manager" should be able to do that for us.

tools-abc

The tools-abc folder contains RedTamarin libraries shared by different platforms
but that can be deployed as command line tools.

So, yes lib-abc and tools-abc are very similar
and let's highlight the differences

  • a lib-abc can not produce an exectuable "as is"

  • a tools-abc can produce an exectuable "as is"

  • a tools-abc should be able to be compiled to a binary
    and support all RedTamarin platforms

  • a lib-abc can only be an ABC file
    if there are dependencies, they are distributed as ABC files
    also in the lib-abc folder

  • a tools-abc can be an ABC file or a SWF file
    if there are dependencies the tools-abc
    should not depend on lib-abc and so
    contains/embed those dependencies

Copyright 2017 zwetan

Creative Commons License This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.