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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3musllinux: musl 1.2+ x86-64

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

Uploaded Python 3musllinux: musl 1.2+ i686

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

Uploaded Python 3musllinux: musl 1.2+ ARM64

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ecdev-0.0.4-py3-none-manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded Python 3

ecdev-0.0.4-py3-none-manylinux2014_i686.whl (1.4 MB view details)

Uploaded Python 3

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

Uploaded Python 3

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

Uploaded Python 3macOS 10.15+ x86-64

ecdev-0.0.4-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.4.tar.gz.

File metadata

  • Download URL: ecdev-0.0.4.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.4.tar.gz
Algorithm Hash digest
SHA256 8d839e253607254e52d4910241077c8269c7ff39894e968bccd61022d0f421ce
MD5 45a5ad417e81f5fe1e1c6b8b0e807fc4
BLAKE2b-256 a960106df86548be142cbf8e80f2ccdab4779c38e5dd6dc3c1d7d433649859ca

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ecdev-0.0.4-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.4-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 b8a163fa46a14bbb19f64b7b2ecf5304ec9ca0b28607274962ad8c7ec71a9c45
MD5 bd427883805496d5a4246079bd3052f4
BLAKE2b-256 cf52e88c4fa37db8b25879ae7f4e514d31bd7803dad69507bf674d11d02e5f37

See more details on using hashes here.

File details

Details for the file ecdev-0.0.4-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for ecdev-0.0.4-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3fc247e2d5e505ce2c8b6d6734c5d91ce069e880c6997d9e622d732bd7aa55ab
MD5 40b0aa9f6b036726c096d775e410e31f
BLAKE2b-256 f77e4bff535c785f2471820b294cc6151c10ae0971450ae27ceaf5fecfeb2653

See more details on using hashes here.

File details

Details for the file ecdev-0.0.4-py3-none-musllinux_1_2_i686.whl.

File metadata

  • Download URL: ecdev-0.0.4-py3-none-musllinux_1_2_i686.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: Python 3, musllinux: musl 1.2+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for ecdev-0.0.4-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 7489287444db4b7b18819523ae5c8d6cec19fe8b9e693ca1576848f9a46e59bf
MD5 1513f18c45290c59aa6ed132bb7f441f
BLAKE2b-256 b1ebc440b1408e2530fbf0e004628c8574a4f801d04cdd7de3b558066fb8ab38

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ecdev-0.0.4-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c45d33d0a8924e5d07b5498855762aac14492124e0d60e98f4bcf3669485d2e7
MD5 b2660e4f35530a2bbb1baa69ded946c7
BLAKE2b-256 3e531a691d96b03069af1a09fad63ed6e680c068fb0ba9d9a1fd0461690c1637

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ecdev-0.0.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6e532a0fe83a140397235b5a4ee8ae65d9b85bc693b4d30310d2a43da48f1d92
MD5 3091c028c41d960bf37ca0c06993cffc
BLAKE2b-256 d66e730cb82c9f1579cf5e7e2980248e3037c7c7cfd4191f323d2f07dbb307d3

See more details on using hashes here.

File details

Details for the file ecdev-0.0.4-py3-none-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ecdev-0.0.4-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 690a73e67930ecbd6433b09922a2007033004760e5d0cd0a44fbef5a0d193475
MD5 0bfcaae55bc895d06f8944efae1f7d4c
BLAKE2b-256 c8f799cf2d2d82251d73484f5081671dd63f19305e75c3b76c96648f5e260ea7

See more details on using hashes here.

File details

Details for the file ecdev-0.0.4-py3-none-manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ecdev-0.0.4-py3-none-manylinux2014_i686.whl
Algorithm Hash digest
SHA256 9c1111888d3d07d1064b8a87e68b46f94cffcb823e8970f9e0ad71ec1775fd97
MD5 e5abc8ac1d3a2a336eb167d2c7df11f4
BLAKE2b-256 bc425b91b24a09867675ac490e6f9edf78f27acf7dadcdc4e29d60a07da88a10

See more details on using hashes here.

File details

Details for the file ecdev-0.0.4-py3-none-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ecdev-0.0.4-py3-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0737ff82cdfdd58d19d896bdc7bcd33923faaa2ad74dcefa95971da4bec6409f
MD5 1b98dfd755f44c462298931cad36c4dc
BLAKE2b-256 eecca535d4b4bcf051dd66dfc2c8ca9b3ae0133b7b94a58bd3799e21cc9891d9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ecdev-0.0.4-py3-none-manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ff8d5c8932d8cd857967c7155d5bb8037bdff890944672cfaa700b5e5cef5901
MD5 691d7f70d444c18dba4debf1ef0ae7c1
BLAKE2b-256 e6b74d035b52fa23c778c03296ec285b34c1c3b3d4b68f44538d970963fd76bb

See more details on using hashes here.

File details

Details for the file ecdev-0.0.4-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.4-py3-none-manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 1933e978b41a67f9b3578ebea3b68d52d80b7490b261b7efe2352d52216eeb07
MD5 816483617488ff06d2e9eeff9456ff3e
BLAKE2b-256 89b19859d1bb2d3e6f25d4d291998865e603b9259a9ca05ef6ea3ed3c520d377

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ecdev-0.0.4-py3-none-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 1b4d6233e443fb6f047dd0e19200e9e23a2298d815e012601d03e7bd7bdef696
MD5 c847d11419ba5946a38221673c0bc1ba
BLAKE2b-256 1a8b0264cd51b0a1e085d48a82f79ab05e319f47649a0be4cf77dddc212f4830

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ecdev-0.0.4-py3-none-macosx_10_15_arm64.whl
Algorithm Hash digest
SHA256 67f6ba66cd58a828bc2f8c601129bd86e1b47a3e588070c7787f9f59d40c4cdf
MD5 60ba8d6cc49de56666791a7cc7cf9c81
BLAKE2b-256 4f6b17716e8559a6475d4256b574e0fe50481083b916144f1c43609ea9b01ce8

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