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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3musllinux: musl 1.2+ ARM64

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ecdev-0.0.6-py3-none-manylinux1_x86_64.musllinux_1_2_x86_64.whl (1.5 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

ecdev-0.0.6-py3-none-manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ecdev-0.0.6-py3-none-manylinux1_i686.musllinux_1_2_i686.whl (1.6 MB view details)

Uploaded Python 3musllinux: musl 1.2+ i686

ecdev-0.0.6-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.6-py3-none-macosx_10_15_x86_64.whl (1.1 MB view details)

Uploaded Python 3macOS 10.15+ x86-64

ecdev-0.0.6-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.6.tar.gz.

File metadata

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

File hashes

Hashes for ecdev-0.0.6.tar.gz
Algorithm Hash digest
SHA256 78fac4013a97fd213cad4071acc485013e645ca37066a150815f746d68884b8a
MD5 9d8ed348fcd67333a42767c9136ea67a
BLAKE2b-256 e5b8de7f46b7fc38c07c8b7ac1ce5a502c92dc459776d1d65ca34c7688824db0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ecdev-0.0.6-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.1.0 CPython/3.13.5

File hashes

Hashes for ecdev-0.0.6-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 ec88e6a70f2a0a76f93b473ad54ebd58243c7e582d1f074263de7175267fa6af
MD5 a2581192dc97f8b74d06af860941cdc9
BLAKE2b-256 f35c043e517d29ab77524dbf77584ab78ed983aa33ae0b895fb08dcecc70926e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ecdev-0.0.6-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 bed51a1b361448f26b54c0b4fc16d8c9dc9bf94327f99073845046a48ccc80cd
MD5 98d67468c5367e86807ac950502615dd
BLAKE2b-256 7aada2beebceb821e40bf430cd108b6e59a5708c242d5ee81467b353bef17b7a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ecdev-0.0.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0b4956f7779e890e4a5db1b1c6f3deb436e56ec9c4f9f8da2c95398a19b7b515
MD5 a9600aee43668a2c58c4a14690414003
BLAKE2b-256 b892899cab67832087171422b0f372dee761fcb96a8f5bc849f0e8f1c05b2476

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ecdev-0.0.6-py3-none-manylinux1_x86_64.musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 840bb057cef6927aeec5db772578f0a91d2602d65df4f827f424fa52c290bbc0
MD5 93f246cd4337ffd33f33a896feea131b
BLAKE2b-256 8eabb847354c9bd6b8b38417883288307c41c5294c8dd712de7ecdd9a6311ae4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ecdev-0.0.6-py3-none-manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 38026681ea6339415d516d7b386ec6b7effadca485cbbd9e53ede3c2df2a2e08
MD5 68f51266f720b825d85aac90e59670e9
BLAKE2b-256 f965a953d4bd99da848cf908a09ff82326073979c3ec48d3fe26f72d7cc9ab62

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ecdev-0.0.6-py3-none-manylinux1_i686.musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 ba0d5a3c093c70661ba867e2885f62b9ef5bebe39bf350ad27da4f767fc5d13d
MD5 6938e60b79cc03a171b4ec4b350ed430
BLAKE2b-256 2c543ba5e4539bbd7b09ab39873a6dba9be672a2cf62ea9e4914ffe5742a8bb7

See more details on using hashes here.

File details

Details for the file ecdev-0.0.6-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.6-py3-none-manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 128abf01f7524a5ddf12853235de3f87aef40e623a1b3169ddce664c56b79582
MD5 8b52cb1a9272f43b5f10f0245607557e
BLAKE2b-256 11efeb7f78043cc6c7800ab0ade1b665b46cd7ba4eda2785dc2164e2a1556361

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ecdev-0.0.6-py3-none-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 a6ba5afcdb04079f7b517630e322705d078cf3e71287480e626994535caa6c54
MD5 b98c551715056c649e2719dd7bcb0a46
BLAKE2b-256 66b1d8806cc3a29a5d06997142bfe220c78769fa4c6ce8669e20e3c4003e5638

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ecdev-0.0.6-py3-none-macosx_10_15_arm64.whl
Algorithm Hash digest
SHA256 ff3a52f2fdaaf5e4f0a5b4e2a7ae2fff96b0020c9a3f559e53eae677e533f052
MD5 7e9faed9383dafcb11b2345aebb278ba
BLAKE2b-256 66f2e75efc3da6ba80aed2a6f4aec051ac21ed00a0ea1f4f88aa3bf24214d963

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