Skip to main content

eC Software Development Kit

Project description

eC Software Development Kit and Runtime Library

https://ec-lang.org

A stand-alone Software Development Kit and runtime library for the eC programming language

(part of the Ecere SDK)

Copyright (c) 1996-2025, Jérôme Jacovella-St-Louis

Copyright (c) 2005-2025, Ecere Corporation

Licensed under the BSD 3-Clause License

Source: https://github.com/ecere/eC

Python packaging: https://github.com/ecere/pyecdev

The eC Programming Language

eC is a light, expressive and intuitive C Style object-oriented programming language. eC is a superset of C89 (in almost a strict sense, with few exceptions such as potential clashes with a few new keywords like class). eC compiles natively just like C (currently, the eC compiler transpiles to C code). C libraries can be used directly and other libraries can invoke C-exported functions and methods in eC code directly through a C API (or through bgen, see below). The language offers modern object-oriented features such as classes, (single) inheritance, polymorphism, properties, generics, defined expressions, unit types (e.g., Radians/Degrees, Meters/Feet) and bit classes. eC supports automatic symbol resolution across multiple eC source files and libraries, which avoids the need for both prototypes and header files. Developers with experience programming in C, C++, Java and/or C# should find eC very familiar. eC also supports reflection with a dynamic object type system and runtime module loading and ejection, facilitating the implementation of plugin systems. Constructors, destructors and reference counting (semi-automatic through global and member instances) also facilitate memory management.

Learn more about eC here.

Ollie-the-sea-otter

Compiler tools

The eC compiler tools include:

  • ecc, the eC compiler, which currently generates C from eC source files as part of the compilation process, which are then compiled using e.g., GCC or Clang,
  • ecp, the eC precompiler, generating .sym files allowing to automatically resolve symbols across eC source files as an alternative to header files,
  • ecs, the eC symbol loader generator, writing a .main.ec file as part of the linking process which will load the necessary symbols at runtime from dynamic eC modules,
  • ear, the Ecere archiver, which packs and unpacks files into a simple archive format based on zlib, with the ability to embed resources within shared libraries and executables and access them using the eC runtime library as e.g., <:archive>directory/file.txt,
  • libecrt, the eC runtime library provided as a shared library (also available independently so that runtime packages depend only on that library), as well as a static library (libecrtStatic.a),
  • libectp, the eC transpiler library, a dependency of the ecc, ecp and ecs tools, including the capability to parse eC source code into an abstract syntax tree and convert it to C99 source code using a few GCC extensions.

See also:

  • epj2make to generate cross-platform GNU Makefiles from Ecere projects (.epj JSON files),
  • bgen for automatically generating object-oriented bindings for C, C++ and Python from eC libraries,
  • as well as the other components of the Ecere SDK such as the Ecere Integrated Development Environment.

eC runtime functionality

The eC runtime library implements:

  • management of eC data types, including the various flavors of structs and classes with and without reference counting, runtime type information, virtual method tables, reflection with the ability to register and define classes at runtime (loading/ejecting new dynamic modules), string management, generic field values containing type information, binary (de)serialization,
  • various types of containers (dynamic arrays, hash tables, linked lists, AVL Trees, multiple forms of associative arrays),
  • files I/O including temporary files, bidirectional processing input/output pipes, creating/decompressing/accessing files from archives (including resources packed directly within the executables), file/directory monitoring, cross-platform file handling functions,
  • multithreading support including threads, mutexes, semaphores and conditions,
  • internationalization (extensive unicode support with the Unicode data resources embedded within the library), internationalization of text strings compatible with GNU gettext, i18n of libecrt itself currently including Chinese, Brazilian Portuguese, Spanish, partial Russian translation, as well as the start of other languages,
  • date and time handling,
  • a JSON parser and writer (with support for automatic JSON (de)serialization of any eC types), as well as utilities to manage application settings stored in JSON files.

See also:

Documentation

See https://ecere.org/docs/ecere/ecere.html and https://ecere.org/docs/ecereCOM/ecere.html for the API documentation of the core eC runtime library, which covers the sys and com namespaces of the Ecere runtime library.

Tao The Ecere Tao of Programming is a Programmer's Guide (still work in progress) teaching the foundations of the eC programming language, also including a C primer.

See also the samples provided with the SDK, and some featured projects as prebuilt binaries at https://ecere.org/software.

Reach out on IRC - #ecere on irc.libera.chat

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ecdev-0.0.1.tar.gz (1.9 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

ecdev-0.0.1-py3-none-win_amd64.whl (1.3 MB view details)

Uploaded Python 3Windows x86-64

ecdev-0.0.1-py3-none-manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ecdev-0.0.1-py3-none-manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl (1.4 MB view details)

Uploaded Python 3manylinux: glibc 2.12+ i686manylinux: glibc 2.17+ i686

File details

Details for the file ecdev-0.0.1.tar.gz.

File metadata

  • Download URL: ecdev-0.0.1.tar.gz
  • Upload date:
  • Size: 1.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for ecdev-0.0.1.tar.gz
Algorithm Hash digest
SHA256 8884ff49bb397311560cce6be91ba946c51c2e8d55e36e95c7712a330adcbde6
MD5 b767cf79eb6a7646e844e92d58ff95cd
BLAKE2b-256 f83dc98c98561fcab08d0f6c2c41e58c7e0eea7287b0ce63fcbc089bff0af5e9

See more details on using hashes here.

File details

Details for the file ecdev-0.0.1-py3-none-win_amd64.whl.

File metadata

  • Download URL: ecdev-0.0.1-py3-none-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for ecdev-0.0.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 913effe42011eb9848256f11175b47d5feccaad79464dd52b946590ea51dd395
MD5 1e93a2e4c0385950264a10efd7f84c90
BLAKE2b-256 c7496c5bf383c06f7a7d55644d09e5c5f5e102c5a77c3073a9f03090e33d3e8b

See more details on using hashes here.

File details

Details for the file ecdev-0.0.1-py3-none-manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ecdev-0.0.1-py3-none-manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bf58dc99f148730798a13efdcdc90f1d121830c0b758a29b32d72c4148d8496c
MD5 341e5d2c4321d0c8e235777c412ba4e1
BLAKE2b-256 023b07205e72851474d9ee2cc99b00e8bf0991ccdb775656118c677f7cfebdc6

See more details on using hashes here.

File details

Details for the file ecdev-0.0.1-py3-none-manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ecdev-0.0.1-py3-none-manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 5e2c9605bf017b58abb9e46a47c325147d48f18bc3d9e39562eb37554f69e7e9
MD5 bf43c3ce45343bd7eb41cccfaf458c18
BLAKE2b-256 64f045083c0b857bea62a77991eacac770bc23824250a93140bef75d3d441c07

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page