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.5.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.5-py3-none-win_amd64.whl (1.4 MB view details)

Uploaded Python 3Windows x86-64

ecdev-0.0.5-py3-none-musllinux_1_2_aarch64.whl (1.4 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

ecdev-0.0.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ecdev-0.0.5-py3-none-manylinux1_x86_64.musllinux_1_2_x86_64.whl (1.4 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

ecdev-0.0.5-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.5-py3-none-manylinux1_i686.musllinux_1_2_i686.whl (1.6 MB view details)

Uploaded Python 3musllinux: musl 1.2+ i686

ecdev-0.0.5-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

ecdev-0.0.5-py3-none-macosx_10_15_x86_64.whl (1.1 MB view details)

Uploaded Python 3macOS 10.15+ x86-64

ecdev-0.0.5-py3-none-macosx_10_15_arm64.whl (1.1 MB view details)

Uploaded Python 3macOS 10.15+ ARM64

File details

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

File metadata

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

File hashes

Hashes for ecdev-0.0.5.tar.gz
Algorithm Hash digest
SHA256 a84d702067b141fd1747f4af94a885af7dc10926a542d0db1ffa4bbe90d57b8e
MD5 34443e23ed089190b5531a18dfbcf584
BLAKE2b-256 4389a995aca35c7f6e26061d3a9293a58d6ba221d26baccaf02e1d3e40ea8dfa

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for ecdev-0.0.5-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 5a5ee89ac406e6e5a2c2f6ffca8d71101f3b2d8e961d2481cd4264826861a585
MD5 8c12136f68c743f698b174e0eb7f9bed
BLAKE2b-256 32ac4911f41602b39a7fa3d94adf7d19bf882c6e342013555b7c6db14373372c

See more details on using hashes here.

File details

Details for the file ecdev-0.0.5-py3-none-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for ecdev-0.0.5-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e547021104d9ac08039a7b955f6c47e341d129d155a1bb497c17c91f504fec5b
MD5 fcffb3f531ae6d2a8ba6c92ebb0a4637
BLAKE2b-256 e64b9f56367ca424e0695732f3a419f5a40af9f2d3c76827ab06433b4038df7b

See more details on using hashes here.

File details

Details for the file ecdev-0.0.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ecdev-0.0.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 eadb77d99d4e8feba3480faaf69195279b505f50f592fb990a3a0109d3dec7e5
MD5 2785cc61801f753501bb30491627bfb8
BLAKE2b-256 973b0ef6d7b89b34cbd7d6e6e5dd7a20bb0e088cda78b67ebb462b3a4ca6f6a4

See more details on using hashes here.

File details

Details for the file ecdev-0.0.5-py3-none-manylinux1_x86_64.musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for ecdev-0.0.5-py3-none-manylinux1_x86_64.musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 59bb13d83c3ca6507f7af0d7acec967c32461a7a55f5bcfaea61eb17ded4e79c
MD5 84c292299a006dfa259ae02cbccaae6d
BLAKE2b-256 dd9dc963860100bb176e5ce376f0ae0c530f89e63c01682f27356dbc1b5d1605

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ecdev-0.0.5-py3-none-manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 011ab9e2c925afaacfdf76a4f598029e7da72deab325f4992bb70be33b4c0903
MD5 024d976097a43878a3297aa981861c31
BLAKE2b-256 9e61ea0c76a81536630215896d5dc36fdce9412819e24a1ac2c793fec2809668

See more details on using hashes here.

File details

Details for the file ecdev-0.0.5-py3-none-manylinux1_i686.musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for ecdev-0.0.5-py3-none-manylinux1_i686.musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 f9053e51597c148313c942f2a868b577408f7edff7e84d60d1e9c0159830ff85
MD5 62c2b87f5bcf7eba002db4b2adc1b50b
BLAKE2b-256 a9a9f06c62a6cdb2cbe40788ff62f8a03e273d9dd40cac3b2998ca23cd6ceb01

See more details on using hashes here.

File details

Details for the file ecdev-0.0.5-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.5-py3-none-manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b126a4e59e5f8ad478efa5d9988418c3b79551737641d89d5827b1ddecfbf075
MD5 e6dee11088c50272c19d7439665baabe
BLAKE2b-256 166f6dd6dfebfe59e8ae47b6b07e159595d20fa70c4a77e6c0d5f25762ca0c05

See more details on using hashes here.

File details

Details for the file ecdev-0.0.5-py3-none-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for ecdev-0.0.5-py3-none-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 db148e892c9f813b7addb6e179109511fbfe79cd224e9836e165e8f39ee93262
MD5 df0eaaad2fb40799724734ec3cf554a5
BLAKE2b-256 8dffb9a4da907624823b72bd0a7a2c2191edc05b403e2d266d6f46ac1bb78d8e

See more details on using hashes here.

File details

Details for the file ecdev-0.0.5-py3-none-macosx_10_15_arm64.whl.

File metadata

File hashes

Hashes for ecdev-0.0.5-py3-none-macosx_10_15_arm64.whl
Algorithm Hash digest
SHA256 f02e21d2ba2068274fc2810e7c460c2fca762af0f6aa71bc96b58310754d06e7
MD5 bf3ed813f471e10d3942465697f42664
BLAKE2b-256 b2fae6afa30a59a18e88c6c8dc774a3c2e065c11d464d4bb20857522ce115667

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