Skip to content

objeck/objeck-lang

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Objeck

Discord Download Objeck C/C++ CI Coverity Scan Build Status

Objeck is an object-oriented programming language with functional features. Objeck emphasizes, expression, simplicity, portability, and scalability. The programming environment consists of a compiler, virtual machine, and command line debugger with IDE plugins.

class Hello {
  function : Main(args : String[]) ~ Nil {
    "Hello World"  PrintLine();
    "Καλημέρα κόσμε"  PrintLine();
    "こんにちは 世界"  PrintLine();
  }
}

See more on Rosetta Code and checkout the following programming tasks.

Notable features

  • Object-oriented with functional features
    • Classes, interfaces and first-class functions
    • Generics with type boxing
    • Anonymous classes
    • Reflection
    • Object serialization
    • Type inference
    • Lambda expressions
    • Closures
  • Libraries
  • Native support for threads, sockets, files, date/time, etc.
  • Garbage collection
  • JIT support for all targets
    • arm64: Linux, macOS (Apple silicon)
    • x86-64: Linux, macOS and Windows

Documentation

Please refer to the programmer's guide documentation and online tutorial. Also checkout Rosetta Code examples.

Screenshots

VS Code Debugger Dungeon Crawler Platformer Windows Utility
alt text alt text alt text alt text alt text

Platform Architecture

alt text

Building on Linux and macOS

  • Install required libraries: sudo apt-get install build-essential git libssl-dev unixodbc-dev libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev libsdl2-mixer-dev libreadline-dev unzip
  • cd to objeck-lang/core/release and run ./deploy_posix.sh with the parameter 64 or macos for x64 Linux or macOS
  • Build output with binaries and documentation will be located in objeck-lang/core/release/deploy
  • Reference objeck-lang/core/release/deploy/readme.html to set addtional paths and find examples

Building on Windows

  • Unzip the OpenSSL Windows libraries in objeck-lang/core/lib/openssl/win/x64
  • Using Visual Studio 2022 or later open objeck-lang/core/release/objeck.sln
  • Ensure the core build completes successfully (in Release mode)
  • To build everything, open a Visual Studio x64 command prompt and go to objeck-lang/core/release directory and run deploy_amd64.cmd
  • Build output with binaries and documentation will be located in objeck-lang/core/release/deploy64
  • Reference objeck-lang/core/release/deploy64/readme.html to learn how to set the environment variables and find code examples

Building under MSYS2 on Windows

  • Under the UCRT64 shell (best MSYS2 Unicode support)
    • Package dependencies
    • pacman --noconfirm -S mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-openssl make mingw-w64-ucrt-x86_64-SDL2 unzip mingw-w64-ucrt-x86_64-SDL2_ttf mingw-w64-ucrt-x86_64-SDL2_mixer mingw-w64-ucrt-x86_64-SDL2_image mingw-w64-ucrt-x86_64-unixodbc
    • cd to objeck-lang/core/release and run ./deploy_msys2-ucrt.sh
    • Build output with binaries and documentation will be located in objeck-lang/core/release/deploy-msys2-ucrt
    • Set the path for to the UCRT64 'bin' directory
    • Reference objeck-lang/core/release/deploy-msys2-ucrt/readme.html to set additional paths and find examples
  • Under the Clang64
    • Package dependencies
    • pacman --noconfirm -S mingw-w64-clang-x86_64-gcc mingw-w64-clang-x86_64-openssl make mingw-w64-clang-x86_64-SDL2 unzip mingw-w64-clang-x86_64-SDL2_ttf mingw-w64-clang-x86_64-SDL2_mixer mingw-w64-clang-x86_64-SDL2_image mingw-w64-clang-x86_64-unixodbc
    • cd to objeck-lang/core/release and run ./deploy_msys2-clang.sh
    • Build output with binaries and documentation will be located in objeck-lang/core/release/deploy-msys2-clang
    • Set the path for to the Clang64 'bin' directory
    • Reference objeck-lang/core/release/deploy-msys2-clang/readme.html to set additional paths and find examples