J is an array programming language

Overview

J: From C to C++20

J is an array programming language created by Ken Iverson and Roger Hui (see image below).

This is a fork of jsoftware/jsource and we will be porting it to C++20.

Try J

If you would like to try J without building from source, check out this site: http://tryj.freeddns.org/

Goals

  • Reduce complexity of build options
  • Compile with GCC 10+
  • Compile with Clang 11+
  • Remove all (most) of the macros
  • Clang-format the code base
  • Clang-tidy the code base
  • Set up CI (Buildkite)
  • Set up Code Coverage
  • Set up badges
  • Get both build / tests running in parallel
    • Parallel build (for free off of zhihaoy branch)
    • Parallel tests
  • Monitor compile & run time perf while refactoring

Non-Codebase Goals

  • Learn to not use mouse

Comparison of Languages

Calculating the first 10 odd numbers:

Language Code Runnable Link
J 1+2*i.10
APL 1+2×⍳10 TryAPL
R -1+2*seq(10)
Python [1 + 2 * i for i in range(10)] Godbolt
Haskell map (1+) $ map (2*) [0..9] OneCompiler
Haskell map ((+1) . (*2)) [0..9] OneCompiler
Haskell take 10 [1,3..] OneCompiler
C++ transform(iota(0, 10), [](auto e) { return e * 2 + 1; }) Godbolt
C# Enumerable.Range(0, 10).Select((int i) => { return i * 2 + 1; })
Java IntStream.range(0, 10).map(x -> x * 2 + 1).toArray();

Getting started & Building:

For building this repository, please see CONTRIBUTING.md.

Image of Ken Iverson and Roger Hui

image

Issues
  • attempt to make subdirectories for Adverbs, Conjunctions and Verbs.

    attempt to make subdirectories for Adverbs, Conjunctions and Verbs.

    I think this might be working. I wanted the CI to run on it. There are probably bugs in my cmake to work out. Though I built it and it didn't error. So maybe we'll be lucky and things work.

    I noticed that the words were in comments at the top of files. So using things like: find . -maxdepth 1 -type f -exec grep -l -H 'Verbs' {} \; I copied the output into excel and used a formula: ="git mv -v "&[@filename]&" "&$F$1 where $F$1 is a directory. So I ended up with something like: git mv -v ./crc32c.c ./verbs So I used the commands moved the files then cleaned up the CMakeLists.

    There might be stragglers like files that are only included by Adverbs, Conjunctions and Verbs should probably go into those directories. Or I may of moved things that didn't need to be.

    Hopefully resolves: https://github.com/codereport/jsource/issues/27

    ci / build 
    opened by Sebanisu 6
  • Remove macros that call other functions with 2 parameters and the order doesn't change.

    Remove macros that call other functions with 2 parameters and the order doesn't change.

    find_replace_macro.py was originally meant to replace all the macros it found. Though this did over 1000 replacements it broke stuff. So I altered it to find and remove one macro at a time, log the changes and print what it removed. So I could copy and paste what changed into git commit. And run tests between each removal.

    I currently am targeting macros that fit this pattern:

    #define C2fromC1(x,y)               jtC2fromC1(jt,(x),(y))
    

    Each macro that has two arguments that are passed to another function. The parameters order doesn't change. So in this instance it takes C2fromC1( and replaces it with jtC2fromC1(jt,.

    removal_log.md is a markdown table showing what was changed so far.

    opened by Sebanisu 5
  • Small cleanup to make_array

    Small cleanup to make_array

    The code was copied from a C macro, where ctype was an argument. There is no need to wrap that in parentheses anymore. Also add some whitespace to make it a bit more readable.

    code quality 
    opened by herwinw 4
  • Clion shows warnings on invalid entries in the .clangformat file.

    Clion shows warnings on invalid entries in the .clangformat file.

    It also shows valid values in tool tips. So I tried to update the .clangformat file based on what it showed me. I also changed the Cpp11 to c++17. i guess the Cpp11 is invalid.

    https://clang.llvm.org/docs/ClangFormatStyleOptions.html

    https://releases.llvm.org/10.0.0/tools/clang/docs/ReleaseNotes.html#clang-format Cpp11 was an older setting, it was depreciated in Clang 10

    ci / build 
    opened by Sebanisu 4
  • Add some more functions to algorithm.hpp

    Add some more functions to algorithm.hpp

    I wanted to be able to test constexpr versions of the functions. So i'm including <array> for testing and added some range based overloads. Added predicates: equal_to not_equal_to is_equal - is_equal is a variadic version of std::equal Added range overloads in ranges namespace. zip_find zip_found is_equal

    is_mismatched was removed as !std::equal covers it.

    auto has to be on the right of the cv qualifiers. Or the clang-format new line won't trigger.

    enhancement 
    opened by Sebanisu 4
  • Remove ARGCHK1/2/3

    Remove ARGCHK1/2/3

    It would be nice if we could remove the following code in j.h:

    #define DEADARG(x)      0
    #define ARGCHK1D(x)
    #define ARGCHK2D(x,y)
    
    #define ARGCHK1(x)      RZ(x) DEADARG(x);   // bit set in deadbeef
    #define ARGCHK2(x,y)    ARGCHK1(x) ARGCHK1(y)
    #define ARGCHK3(x,y,z)  ARGCHK1(x) ARGCHK1(y) ARGCHK1(z)
    

    and all of the places that call it (~800).

    Not sure it is possible though as some unit tests might be testing failures (so might have to replace with something).

    good first issue code removal 
    opened by codereport 4
  • Create `unittest` script that runs `.ijs` test file from JConsole

    Create `unittest` script that runs `.ijs` test file from JConsole

    Currently, in order to run a test inside jconsole you have to type the following:

    testpath=: '/home/cph/jsource/test/'
    0!:0 <testpath,'tsu.ijs'
    0!:2 <testpath,'<insert test name>.ijs'
    

    If you be nicer if we could just type this:

    unittest '<insert test name>'
    
    enhancement good first issue 
    opened by codereport 4
  • Split folder adverbs. Also conjunctions and verbs!

    Split folder adverbs. Also conjunctions and verbs!

    Due to my previous attempt going up in smoke I'm doing like one of these at a time. :D

    The target_include_directories is working. All these files will look in ./jsrc as if they were in that folder. So you to include ./jsrc/adverbs/a.h from ./jsrc/j.h you need #include “adverbs/a.h”. But to go the other way you don’t need to change it. ./jsrc/j.h from ./jsrc/adverbs/a.h is just #include “j.h”

    You can have multiple directories in target_include_directories but it seems to break when you have directories in the same tree like ./jsrc/adverbs and ./jsrc. But something like ./jsrc/adverbs and ./jsrc/misc should work.

    Resolves https://github.com/codereport/jsource/issues/27

    ci / build 
    opened by Sebanisu 4
  • Removing remaining SLEEF related code

    Removing remaining SLEEF related code

    I removed all the remaining SLEEF conditional code that I could find. Including few macros that were only used by the SLEEF code.

    This might also address #21.

    There are two tests failing on my system (osx) both before and after the changes. I added what information I could gather below, in case those might need some attention at some point.

    99% tests passed, 2 tests failed out of 401
    
    Total Test time (real) = 339.31 sec
    
    The following tests FAILED:
              7 - g001 (Failed)
            180 - g420stch (SEGFAULT)
    Errors while running CTest
    FAILED: CMakeFiles/Debug/test.util
    

    The first one I could not reproduce in the jconsole, and it also passed when running single threaded, so it might be some race condition between tests.

    The second one I traced back to the following snippet:

    etx      =: 1 : 'u :: (<:@(13!:11)@[email protected]: >@{ 9!:[email protected]@0:)'  NB. error message from error number -- from test/tsu.ijs:59
    'length error' -: ,.&.>/ etx 1 2;3 4 5                     NB. SEGFAULT here
    

    and here is where the debugger located the segfault.

    (lldb) target create "./build/jsrc/Debug/jconsole"
    Current executable set to './build/jsrc/Debug/jconsole' (x86_64).
    (lldb) r
    Process 37931 launched: '.../build/jsrc/Debug/jconsole' (x86_64)
    Hello YouTube Viewers, all 22 of you!
       etx      =: 1 : 'u :: (<:@(13!:11)@[email protected]: >@{ 9!:[email protected]@0:)'
       ,.&.>/ etx 1 2;3 4 5
    length error
    Process 37931 stopped
    * thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0xe000020)
        frame #0: 0x000000010292288d libj.dylib`jtfa(jt=0x0000000101016000, wd=0x00000001006110c0, t=32) at m.c:736:3
       733     fana(np);  // increment the box, possibly turning it to recursive
       734     np=np0;  // advance to next box
       735    };
    -> 736    fana(np);  // increment the box, possibly turning it to recursive
       737   } else if(t&(VERB|ADV|CONJ)){V* RESTRICT v=FAV(wd);
       738    // ACV.
       739    fana(v->fgh[0]); fana(v->fgh[1]); fana(v->fgh[2]);
    Target 0: (jconsole) stopped.
    (lldb) bt
    * thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0xe000020)
      * frame #0: 0x000000010292288d libj.dylib`jtfa(jt=0x0000000101016000, wd=0x00000001006110c0, t=32) at m.c:736:3
        frame #1: 0x00000001029225fa libj.dylib`jttpop(jt=0x0000000101016000, old=0x000000010101c000) at m.c:862:11
        frame #2: 0x00000001029150bd libj.dylib`jdo(jt=0x0000000101016000, lp=",.&.>/ etx 1 2;3 4 5") at io.c:288:2
        frame #3: 0x0000000102915a35 libj.dylib`JDo(jt=0x0000000101016000, lp=",.&.>/ etx 1 2;3 4 5") at io.c:382:9
        frame #4: 0x0000000100001f5b jconsole`::jedo(sentence=",.&.>/ etx 1 2;3 4 5") at jeload.cpp:44:12
        frame #5: 0x0000000100001dd0 jconsole`main(argc=1, argv=0x00007ffeefbff220) at jconsole.c:293:11
        frame #6: 0x00007fff71606cc9 libdyld.dylib`start + 1
    (lldb)
    
    code removal 
    opened by juntuu 4
  • Removing openssl

    Removing openssl

    Keeping with the tradition of deleting stuff and seeing what happens, this PR removes openssl and with it all the assembly. This comes at the cost of removing the shasum foreign. That is, 128!:6 does no longer work and gives a domain error.

    I think this cost is ok, given that we are able to delete 90 000 lines of assembly.

    J foreign docs: https://code.jsoftware.com/wiki/Vocabulary/bangco, https://code.jsoftware.com/wiki/Vocabulary/Foreigns#m128

    The test for 128!:6 (g128x6.ijs) and one test using it (g640.ijs) is also removed.

    code quality 
    opened by hermabe 4
  • Fixed linker errors for macOS

    Fixed linker errors for macOS

    gemm_vec-ref.c was added back because of the following The following macros are located in jsrc/blis.h, bli_dgemm_128_6x4 & bli_zgemm_128_3x2 are both functions defined in jsrc/blis/gemm_vec-ref.c

    #define BLIS_DGEMM_UKERNEL         bli_dgemm_128_6x4
    #define BLIS_DEFAULT_MC_D          72
    #define BLIS_DEFAULT_KC_D          256
    #define BLIS_DEFAULT_NC_D          4080
    #define BLIS_DEFAULT_MR_D          6
    #define BLIS_DEFAULT_NR_D          4
    
    #define BLIS_ZGEMM_UKERNEL         bli_zgemm_128_3x2
    #define BLIS_DEFAULT_MC_Z          72
    #define BLIS_DEFAULT_KC_Z          256
    #define BLIS_DEFAULT_NC_Z          4080
    #define BLIS_DEFAULT_MR_Z          3
    #define BLIS_DEFAULT_NR_Z          2
    

    Which are also defined to in blis.h

    #define dgemm_micro_kernel BLIS_DGEMM_UKERNEL
    #define zgemm_micro_kernel BLIS_ZGEMM_UKERNEL
    #define dgemm2_micro_kernel BLIS_DGEMM_UKERNEL
    #define zgemm2_micro_kernel BLIS_ZGEMM_UKERNEL
    

    And then called in jsrc/gemm.c, line 244 - 259

    if (mr==MR && nr==NR) {
        ((hwfma)?dgemm2_micro_kernel:dgemm_micro_kernel)(kc, &alpha, &_A[i*kc*MR], &_B[j*kc*NR],
                           &beta,
                           &C[i*MR*rs_c+j*NR*cs_c],
                           rs_c, cs_c,
                           &auxdata, 0);
    } else {
        ((hwfma)?dgemm2_micro_kernel:dgemm_micro_kernel)(kc, &alpha, &_A[i*kc*MR], &_B[j*kc*NR],
                           (double*)&dzero,
                           _C, 1, MR,
                           &auxdata, 0);
        dgescal(mr, nr, beta,
                &C[i*MR*rs_c+j*NR*cs_c], rs_c, cs_c);
        dgeaxpy(mr, nr, 1.0, _C, 1, MR,
                &C[i*MR*rs_c+j*NR*cs_c], rs_c, cs_c);
    }
    

    and line 757 - 772

    if (mr==MR && nr==NR) {
          ((hwfma)?zgemm2_micro_kernel:zgemm_micro_kernel)(kc, &alpha, &_A[i*kc*MR], &_B[j*kc*NR],
                             &beta,
                             &C[i*MR*rs_c+j*NR*cs_c],
                             rs_c, cs_c,
                             &auxdata, 0);
      } else {
          ((hwfma)?zgemm2_micro_kernel:zgemm_micro_kernel)(kc, &alpha, &_A[i*kc*MR], &_B[j*kc*NR],
                             (dcomplex*)&zzero,
                             _C, 1, MR,
                             &auxdata, 0);
          zgescal(mr, nr, beta,
                  &C[i*MR*rs_c+j*NR*cs_c], rs_c, cs_c);
          zgeaxpy(mr, nr, zone, _C, 1, MR,
                  &C[i*MR*rs_c+j*NR*cs_c], rs_c, cs_c);
      }
    

    So the question here is, how does it compile on gcc and clang on Ubuntu. Yet on macOS both gcc and clang give linker errors.

    In jsrc/jeload.cpp:

    • len needs to be mutable to be passed to _NSGetExecutablePath which was causing building errors because to was const
    bug 
    opened by ahmadbeirkdar 4
  • Docs fixes

    Docs fixes

    resolves: https://github.com/codereport/jsource/issues/216

    I'm taking some things I learned from adding docs on my repo and applying it to yours.

    • Unrelated I also added code to cmake to make it go git the submodule for me.
    • Add myst_parser, remove the preprocessor.py
      • I couldn't get this to work. myst_parser supports .md files.
    • GLOB_RECURSE more things. these are DEPENDS so that cmake knows to rerun sphinx or doxygen if these files change.
      • was just .h files
      • now checks .cpp, .c, .hpp
      • Also .rst and .md
    • doygen disable HTML and LATEX as sphinx only uses XML
    • set source_suffix so sphinx knows to check both .md and .rst files.
    • made a verbs.md and left verbs-old.rst so you could compare.
    • updated FindSphinx.cmake to make it more likely to find sphinx. pip installs it to your home folder on ubuntu. So I gave it some hints of places to look.
    bug documentation 
    opened by Sebanisu 0
  • preprocessor.py shutil.copytree throws permission denied messages.

    preprocessor.py shutil.copytree throws permission denied messages.

    [133/133] Generating documentation with Sphinx
    FAILED: docs/sphinx/index.html
    cd /mnt/d/dev/jsource/build/docs && /mnt/d/dev/jsource/docs/scripts/preprocessor.py --input /mnt/d/dev/jsource/docs/source --output /mnt/d/dev/jsource/build/docs/sphinx_temp && /home/pcvii/.local/bin/sphinx-build -b html -Dbreathe_projects.jsrc=/mnt/d/dev/jsource/build/docs/doxygen/xml -Dbreathe_default_project=jsrc /mnt/d/dev/jsource/build/docs/sphinx_temp /mnt/d/dev/jsource/build/docs/sphinx
    Traceback (most recent call last):
      File "/mnt/d/dev/jsource/docs/scripts/preprocessor.py", line 138, in <module>
        shutil.copytree(args.input, args.output, dirs_exist_ok=True, copy_function=shutil.copy)
      File "/usr/lib/python3.8/shutil.py", line 554, in copytree
        return _copytree(entries=entries, src=src, dst=dst, symlinks=symlinks,
      File "/usr/lib/python3.8/shutil.py", line 510, in _copytree
        raise Error(errors)
    shutil.Error: [(<DirEntry '_static'>, '/mnt/d/dev/jsource/build/docs/sphinx_temp/_static', "[Errno 13] Permission denied: '/mnt/d/dev/jsource/build/docs/sphinx_temp/_static'"), ('/mnt/d/dev/jsource/docs/source', '/mnt/d/dev/jsource/build/docs/sphinx_temp', "[Errno 13] Permission denied: '/mnt/d/dev/jsource/build/docs/sphinx_temp'")]
    ninja: build stopped: subcommand failed.
    

    I've been trying to fix it for over a hour. I'm on windows wsl ubuntu linux. There is an extension the adds markdown support to sphinx maybe that would be better than this preprocessor.py script. myst_parser

    bug documentation 
    opened by Sebanisu 0
  • Release build fail, debug build warn, GCC11

    Release build fail, debug build warn, GCC11

    Guessing that these are GCC11 related, but haven't checked other versions. gcc --version gcc (GCC) 11.0.0 20210225 (Red Hat 11.0.0-0)

    ninja -C build -f build-Release.ninja

    In file included from ../jsrc/j.h:1019,
                     from ../jsrc/conjunctions/cu.c:6:
    ../jsrc/conjunctions/cu.c: In function ‘jtevery’:
    ../jsrc/jtype.h:167:19: error: array subscript ‘AD[0]’ is partly outside array bounds of ‘I[7]’
                                                   {aka ‘long long int[7]’} [-Werror=array-bounds]
      167 | #define AK(x) ((x)->kchain.k)            // offset of ravel wrt x
          |                   ^~
    ../jsrc/ja.h:105:13: note: in expansion of macro ‘AK’
      105 |             AK((A)(v))    = (CAV(w) - (C *)(v));
          |             ^~
    ../jsrc/conjunctions/cu.c:55:9: note: in expansion of macro ‘fauxvirtual’
       55 |         fauxvirtual(virtw, virtblockw, w, 0, ACUC1);
          |         ^~~~~~~~~~~
    compilation terminated due to -Wfatal-errors.
    

    The debug build gives a different warning of possible UB

    [55/133] Building C object jsrc/CMakeFiles/j.dir/Debug/verbs/vfrom.c.o
    In file included from ../jsrc/j.h:1017,
                     from ../jsrc/verbs/vfrom.c:6:
    ../jsrc/verbs/vfrom.c: In function ‘jtafrom’:
    ../jsrc/j.h:644:16: warning: operation on ‘jt->ranks’ may be undefined [-Wsequence-point]
      644 |      jt->ranks = (RANK2T)(I)z,                  \
    ../jsrc/ja.h:21:77: note: in definition of macro ‘df2’
       21 | #define df2(r, x, y, z) (r = ((r = (z)) ? (FAV(r)->valencefns[1])(jt, (x), (y), r) : r))
          |                                                                             ^
    ../jsrc/j.h:648:31: note: in expansion of macro ‘IRS1COMMON’
      648 | #define IRS1(w, fs, r, f1, z) IRS1COMMON(jt, w, fs, r, f1, z)           // nonneg rank
          |                               ^~~~~~~~~~
    ../jsrc/verbs/vfrom.c:484:22: note: in expansion of macro ‘IRS1’
      484 |                      IRS1(w, 0L, wcr, jtbox, ind),
          |                      ^~~~
    
    opened by willwray 2
  • Remove old artifacts to shrink the repo

    Remove old artifacts to shrink the repo

    There are many large build artifacts in the repo history that appear to be vestigial. Time for a Spring clean?

    On first push, GitHub warns:

    remote: warning: GH001: Large files detected.
          You may want to try Git Large File Storage ...
    remote: warning: File makevs/jdll/jdll19.sdf is 51.31 MB;
          this is larger than GitHub's recommended maximum file size of 50.00 MB
    

    Just the top 2 contribute 100 MB (before compression):

    53805056 makevs/jdll/jdll19.sdf 47640576 SLEEF/build/.vs/SLEEF/v16/Browse.VC.db

    Plus many more large files under the SLEEF directory that all appear to be Windows build artifacts.

    opened by willwray 2
  • Convert isempty to C++

    Convert isempty to C++

    A branch I had around. It's pretty much a direct copy from the C function, with a few remarks:

    • I'm not sure what the return type of the call for a sparse array is. It calls jteps, which confuses me a lot. I'm not even sure why it does this.
    • I thought about rewriting AN to something more descriptive, similar to the is_sparse function. However, this macro is used for assignment as well (see make_array), so I just left the C macro here. I think the consistency here is more important.
    c to c++ 
    opened by herwinw 2
Owner
Conor Hoekstra
Senior Library Software Engineer @NVIDIA on @rapidsai, formerly @amzn, @moodysanalytics
Conor Hoekstra
J is an array programming language

J: From C to C++20 J is an array programming language created by Ken Iverson and Roger Hui (see image below).

Conor Hoekstra 38 Aug 3, 2022
PLP Project Programming Language | Programming for projects and computer science and research on computer and programming.

PLPv2b PLP Project Programming Language Programming Language for projects and computer science and research on computer and programming. What is PLP L

PLP Language 5 Jun 23, 2022
StarkScript - or the Stark programming language - is a compiled C-based programming language that aims to offer the same usability as that of JavaScript's and TypeScript's

StarkScript StarkScript - or the Stark programming language - is a compiled C-based programming language that aims to offer the same usability as that

EnderCommunity 5 May 10, 2022
frost is a programming language with a focus on low-friction systems programming.

❄️ frost frost programming language About frost is a programming language with a focus on low-friction systems programming.

null 4 Nov 12, 2021
The Wren Programming Language. Wren is a small, fast, class-based concurrent scripting language.

Wren is a small, fast, class-based concurrent scripting language Think Smalltalk in a Lua-sized package with a dash of Erlang and wrapped up in a fami

Wren 5.8k Aug 9, 2022
Manual map shellcode (aka byte array) injector

ShellJector This little tool can download DLL from the internet and inject it as shellcode (aka byte array) into process with manual map injection. Th

Александр Вольф 17 Jul 28, 2022
A C++ library with all the online array problems and etc which I get online

cpp-Library A C++ library with all the online array problems and etc which I get online. Setup To setup it simply just download the repo and then move

Padmashree Jha 6 Dec 6, 2021
Dynamic array supporting Range Minimum Queries

dynamic-RMQ Dynamic array supporting Range Minimum Queries. Data structure that represent a dynamic array supporting Range Minimum Queries. The data s

Massimiliano Rossi 3 Oct 31, 2021
An experimental sprite rendering setup utilizing SSBO's, Threading, EnTT reactive systems, and array-textures based sprite caching.

entt-reactive An experimental sprite rendering setup utilizing pooled SSBO's, a multithreaded setup based on Even Todd's The Poor Man's Threading Arch

Jackie Fuchs 7 Apr 29, 2022
An associative array implemented by C laugnage

C Map An associative array implemented by C laugnage. This is an implementation of an associative array written by C. it is similar as C++ <map> but i

Dr.Xiao 1 Jan 21, 2022
Tiny project to convert a .ase to a RGBA Byte array

Tiny project to convert a .ase to a RGBA Byte array

Stephen Ma 3 Apr 6, 2021
Competitive Programming - Programming👨‍💻 Questions on BinarySearch💻, LeetCode💻, CodeChef💻, Codeforces💻,DSA 450

?? Hacktoberfest2021 ?? This repository is open to all members of the GitHub community. Any member can contribute. Contribute according to the steps g

Anupam Kumar Krishnan 119 Aug 2, 2022
A minimal viable programming language on top of liblgpp

This project aims to implement a minimal viable programming language on top of liblgpp. setup The project requires a C++17 compiler, CMake and liblgpp

Andreas Nilsson 73 Jun 28, 2021
A perfect blend of C, Java, and Python tailored for those who desire a simple yet powerful programming language.

Fastcode A perfect blend of C, Java, and Python tailored for those who desire a simple yet powerful programming language. FastCode is a procedural/str

null 27 May 31, 2022
Loop is an object oriented programming language

Loop Loop is an object oriented programming language. How do I build and run loop? Make sure, you installed the requirements for clang and make: Debia

Loop 24 Aug 9, 2021
C implementation of the Monkey programming language.

Development of this interpreter continues here: dannyvankooten/pepper-lang C implementation of the Monkey programming language. Bytecode compiler and

Danny van Kooten 18 Jul 2, 2022
A programming language made in C

1. Fang A programming language made in C 1.1. Meaning Fang stands for "Feline Language". In hopes of it being cool like a cat! On top of it, you can b

Synth 5 Apr 8, 2021
AHHH: a programming language for the dreadful

AHHH: a programming language for the dreadful Screaming into the Void but make it Turing Complete AHHH is an esoteric programming language inspired by

Kyle Morgenstein 133 Jul 28, 2022
Pandex is a light but FAST programming language written in C . Pandex goal is that be hard & it's good for eductional goals

The Pandex programming language version 1.0.0.3 Pandex versions release type The Pandex version has four numbers. the first number holds 1 ( or 0 in s

null 8 May 23, 2022