Menu

Home

Mark Anthony Taylor (Shyreman)

Please check the GIT repo directly for latest version of Sexy
https://github.com/theabstraction/rococo.git

Latest Changes: 18 September 2020
Compilation improved 10% or so in Release mode by addition of stringmap class to replace std::unordered_map<std::string...> in the codebase
Sexy now has packages and modules. A source code tree, with namespaces determined by pathnames can be compiled into a single flat file, and
imported into a script with (' #import (<module-name> "namespace")). MHost now packages up its UI code in a single package. Packaging is optimal
when the script writer has to handle many script files and wants to avoid micromanaging which script files should be included a product. Sexy is near
feature complete - the main TODO item is to allow macros to operate as top-level expression, rather than being limited to function bodies. This will allow
Sexy to generate types at run-time, something close to how templates function in C++, but will the improved flexibility of S-macros. </module-name></std::string...>

12 August 2020
Minor fixes to code base. Much work done on Rococo.MPlat which is the 3D game library designed to be fully scriptable by Sexy. This includes MHost, for allowing a script complete control of the main loop. I am currently trying to finish my game Hyperverse, a 3D dungeon crawler, which is built on top of MPlat.

25 June 2019
Full referenced counted objects. Sorry chaps, but objects can no longer by created on the stack. Structures are unaffected.
Many many bug fixes.
Coroutine libraries allow many routines to co-operatively multitask by yielding execution at safe points.
Dynamic dispatch interfaces allow Objective-C like message sending.
Delta operators -= += *= and /=
Comparison operators != == <= >= can now be overloaded
Vastly improved syntax.

Please see sexy.script.test and mhost RPG as examples of code in action.
Documentation coming soon.

Welcome to the Sexy Scripting Language Wiki

Mission Statement

Sexy is designed to be the perfect scripting language to interface with C++ 3D games engines - handling
massive number of AI entities using microthreading.

[Content]

The requirements of any such language

* Store internal types as compact C-style structures that can be referenced in a native callback
  function via a single pointer to minimize martialling cost.

* Use strong typing to minimize run-time conversions.

* Use the stack as much as possible for both primitive variables AND objects.

* The macro system should be expression based rather than token based.

* Allow full reflection inside the language, but also outside the language, so that the C++
 environment can query the full internal state of any script.

* Permit step-by-step debugging with stack interrogation.

* Permit yield / resume logic with minimal resume costs to permit tens of thousands of scripts
 to run in sequence with little context switching cost.

Sexy was designed as a games programming language to satisfy all these constraints. In addition a major
improvement over the design of many OO languages, is that every interface in the language automatically
generates an associated null object to which default references refer. This does away with null
reference exceptions. A null object implements some interface as a set of null methods. A null method,
by definition, ignores all inputs and returns 0 or null object references on all outputs.

S-Expression syntax

There are only two significant formats for permitting expression tree based macros, S and XML. S was
chosen as it is much simpler than XML, and so is much easier and much faster to parse, as well as being
less cumbersome to code. S-expressions are used for LISP, which is a proven language that has
demonstrably better macros than perhaps all other language.

Sexy is designed to be familiar to all C++ programmers

Sexy is meant to be an easy language for programmers of most OO languages. The fundamental units are
variables, functions, structures, classes, interfaces, factories and namespaces. By use of the BennyHill
generator it is trivial to define and maintain an interface that C++ and Sexy can share, thus allowing
one to script C++ objects with ease.

[Content]

Project Members:


Related

Wiki: Content