Skip to content

Releases: kc3-lang/kc3

KC3 v0.1.14

11 Feb 16:17
Compare
Choose a tag to compare

New in kc3-0.1.14 :

  • pretty printer
    • auto indent KC3 code
  • map
    • access
    • get (get key value)
    • put (return a new map)
  • struct
    • access
    • get
    • put
  • facts database (triple store) accessible from KC3
    • new database (Ptr)
    • add_tags
    • collect_with
    • collect_with_tags
    • remove_tags
    • with_tags
    • with
    • with_macro
  • HTTPd v0.2.0
    • dynamic pages (MVC)
      • models are defined in ./app/models/
      • controllers are defined in ./app/controllers/
      • templates are defined in ./app/templates/
      • views are defined in ./app/views/
      • dynamic router is defined in ./config/router.kc3
        • For now we don't match request method and just match the start of
          the URL with Str.starts_with?(url, route.path)
        • If there is no route or no controller or the controller does
          not return a HTTP response, a 404 error is returned. Other
          frameworks like Ruby on Rails or Phoenix do return a 500...
  • threads
    • env_fork_init
    • env_fork_clean
    • Thread.new(fn)
  • fx v0.2.0
    • file explorer
      • preview files
        • text
        • image
        • video
        • audio
        • binary (hexdump -C)
      • properties
        • create
          • POST "/properties/*path"
        • delete
          • DELETE "/properties/*path"

KC3 v0.1.13

02 Sep 12:27
Compare
Choose a tag to compare

KC3 v0.1.13

KC3 is a programming language with meta-programmation and a graph database embedded into the language. It aims to be the language for semantic programming, and programming the semantic web.

We are currently fundraising for the project to become real and there is a working prototype available at https://git.kmx.io/kc3-lang/kc3/, please see the https://www.kmx.io/en/donations.html page for helping out.

KC3 is currently a programming language project, inspired by C, Elixir and Common Lisp. It could be described as C with Elixir modules, pattern matching, and a semantic object system. The idea is to plug modules, closures, pattern matching, a graph database and metaprogramming into C99 with an extremely small set of dependencies.

Supported operating systems (additional dependencies) :

BSD
Linux (libbsd, libmd)
MacOS X (libmd)
Windows (MSys2)
Supported architectures :

aarch64 (arm64, Apple M1, Apple M2)
amd64
i386
sparc64

New in this release

  • libkc3
    • pretty printer
      • indentation (str, if, do, fn, struct, map)
  • ikc3
    • facts
      • Facts.with_tags(facts, s, p, o, fn (fact) {}) -> cursor
  • lib
    • File.exists?
    • File.is_directory?
    • File.list
    • File.stat
  • HTTPd v0.1.1
    • file server (lftp)
    • route_request
      • error_404_page
      • directory_page
    • slash (lftp)

v0.1.10

12 Mar 08:18
Compare
Choose a tag to compare
  • OpenGL demo (make demo_gl)
    • OpenGL 3.3 with shaders (portable)
    • makes use of C3 data structures.
  • pin operator (for pattern matching)
  • macros
  • special operators
    • their arguments do not get evaluated
    • they return a value
    • parsed without syntax
      Ideally it would look like this :
      ic3> defspecial_operator op (a, b, c) { true }                                                    
      special_operator (a, b, c) { true }                                                               
      ic3> op 1 2 3                                                                                     
      true                                                                                              
      
    • See C3 module in lib/c3/0.1/c3.facts
  • if, then, else.
  • rational numbers and corresponding operations
  • complex numbers and corresponding operations
  • float 128 bit (F128) and corresponding operations

v0.1.8

08 Nov 13:12
Compare
Choose a tag to compare

New in this release

  • Support for additional platforms : arm64, sparc64
  • libc3
    • functions
      • funcall
  • tests
    • added many tests for integer operations (s8, s16, s32, s64, sw,
      integer, u8, u16, u32, u64, uw, and all their combinations for
      binary operators)