Skip to content

blakeohare/crayon

Repository files navigation

Crayon version 2.9.0

==============================================

Please go to http://crayonlang.org for documentation, tutorials, demos, and other resources.

A NOTE ABOUT CRAYON 2.9.x

Crayon 2.9.x is a series of transitionary versions to Crayon 3. There will be very little feature development occurring in 2.9 and should only be used for regression testing. For most purposes, Crayon 2.1.1 should be used instead. Most releases in the 2.9.x range will occur as a result of stabilization after major refactors/rewrites and will not related to new features. Major bugs will continue to be fixed in the 2.1.1 branch and possibly a version 2.1.2 will be released at some point with those fixes.

Planned 2.9.x --> 3.0 goals

  • Exporting projects will be based on target platforms, not languages. My goal is to remove the extra step of compiling your project once it has been exported to a target platform.
  • Extensible platform export: currently you can only export to the platforms that are directly supported (which, as it stands, is iOS, Android, "web", and vague support for the languages C#, Java, and PHP). My goal is to redo export in a way that is extensible for custom platforms.
  • True Package management: there will be a real package manager built in to Crayon and a way to integrate this with github. The footprint of the basic Crayon compiler and VM download should be minimal and libraries will be downloaded on an as-needed basis.
  • Better support for other platforms by rewriting Crayon in Crayon: Crayon has mostly worked on all native platforms but due to the deep dependence on .NET standard, running both the compiler and the VM on Mac and Linux based platforms were often turbulent. Furthermore, running the compiler in the browser has been impossible. Be rewriting the compiler in Crayon itself, this unlocks many interesting possibilities.
  • Streamline game and UI internals: Currently the game implementation is highly specific to the language you export to. For Java, it was classic AWT support, for Python, it used PyGame, for C# it used OpenTK, and for JavaScript, it used Canvas. UI support was non-existent for Java and Python export, and was shakey for native UI and only worked on Windows, using the .NET's classic Internet Explorer integration to render web-based UI's in a browser pane. This was an unscalable hack and a long term solution for a variety of UI's (for both general UI and games) needs to be built.

That said, please pardon my dust! If you're just getting started with Crayon, I strongly recommend just downloading version 2.1.1 for the time being. If you're feeling adventurous, please grab down the latest from master and give it a whirl!

Build Status

Copyright

Copyright 2021 crayonlang.org, All rights reserved.

Licenses

Crayon is released under the MIT license.

See the LICENSE.txt file included with this release for further information.

Reporting Bugs

Please report any issues you may find to the GitHub issue tracker located at https://github.com/blakeohare/crayon/issues It may be helpful to check the IRC channel first to make sure any issue you find is actually a bug or for workarounds.

Community

The official Crayon IRC channel is #crayon on FreeNode.net. Feel free to ask any questions there. Google Mailing list/forum: https://groups.google.com/forum/#!forum/crayon-lang Use the stackoverflow tag "crayon" for any issues. This tag is monitored.

New in 2.9

The following have been added since 2.1

2.9.0

  • Removed Python, Java, and PHP support for exporting projects.
  • Overhauled the Game and UI libraries. These are now based on a JavaScript project called U3 that runs in both the browser and in Electron and can render arbitrary UI to a window.
  • The built-in event loop is now truly built in to the VM and no longer requires a dispatcher in whichever UI framework is currently running or manual flushing of the event queue to run. The Dispatcher library has been deleted.
  • Image Sheets have been removed entirely. The resource atlas-ification of images is now managed automatically both during compilation and at access-time. The ImageResources library has been removed in favor of a more versatile Images library that allows for the modification of bitmap objects with or without UI.
  • Both the compiler and VM of Crayon have been upgraded from .NET Standard to .NET Core.
  • Eliminated all CNI calls from libraries and instead just use Core Libraries. Libraries can no longer import native code.
  • Implement a collection of IPC functionality in a library that can be used in lieu of CNI.

Setting up and Running Crayon

If you have downloaded Crayon from crayonlang.org/download (recommended) please read the instructions on the site (linked from download page). If you are compiling Crayon from source code directly (power users) run the release Python script in the Release directory to create a release package for your OS, then follow the same instructions as if you downloaded it from the site. If you are trying to run Crayon from the debugger, open Compiler/CrayonWindows.sln or Compiler/CrayonOSX.sln. Create a file called DEBUG_ARGS.txt in the directory of your %CRAYON_HOME% environment variable. The last line of this file will be used as the command line arguments. Note: Debug builds will not catch compiler error exceptions.