matt-attack / jet Goto Github PK
View Code? Open in Web Editor NEWA no-nonsense C++ alternative built upon LLVM.
License: MIT License
A no-nonsense C++ alternative built upon LLVM.
License: MIT License
Part of the implementation of #19
Currently loads and parses the "db" for each project, could cache this at least for the lookups of one project.
Currently there is no way to instantiate an array type without also allocating an array. Perhaps allow user to instantiate on the stack a [] object and assign to it manually.
let int[] arr;
arr.size = 5;
arr.ptr = <int*>malloc(5*4);
More complex syntax could also be allowed which lets the user construct it like any other object.
let arr = int[](5, <int*>malloc(5*4));
Since the size of an array type is always known, could insert a bounds check in debug mode or when a flag is used.
Currently everything is just a double. Need to handle floats with an f at at the end
Should catch crashes or be used in libraries to indicate problems. Would be nice if it could print a callstack out to the user so they arent completely in the dark if something goes wrong.
For instance, in the Vector test project, tt.GetEnumerator().Test() fails with an error about tt being undefined.
For some reason debug information is nowhere to be found in output executables or at the very least GDB cannot find it. Need to fix this on Linux.
This could be an issue with the circular dependency checker
required for #19 eventually
Just add a new option in project files to accept a version string that will be stored alongside the package name and location in the central database later.
Convert everything to use Tokens rather than strings and store all tokens. This is done for many cases, but some are still left.
Enable finding of projects stored throughout your computer. Based on idea from #18
Implementation of this would involve storing a list of projects built and their locations in a central location on the computer for the compiler to be able to find when searching for dependencies.
Currently, dependencies are specified as a path relative to the project requiring them. This will have to be changed somewhat. The initial idea is to search for projects in this list if no path delimiter is specified (/) and allow for a required version to be added after the project name.
Exact details on the version system and how to handle duplicates will have to be figured out in following issues. The main goal of this issue is the central database and being able to find packages with no version resolution.
Because nobody likes managing their own packages
Currently compilation output is in the form of two separate files, a .a archive with all the .o files and a .jlib with all the language specific metadata.
Proposed syntax is "using NewType = OtherType;"
Currently the project management system uses the name you supplied to build the library, not the folder name or something hardcoded. Perhaps this would be good to add to the project file for consistency.
This is causing things to fail because of capitalization mismatches. (JetCore vs jetcore)
Allow implicit casting of 0 and 1 to bool. Perhaps consider allowing values above 1 to cast to bool through a comparison. But a bool should ONLY be equal to zero or one.
Array size member of Type is no longer used as it was shared between all usages of the type and led to issues. Need to remove it and all remaining uses of it.
Future addition could be adding a new place for this size to help with the compiler making smarter decisions and to give better hints to the user.
Currently structs are all returned by passing a pointer to the return value as one of the arguments. This doesnt always give a gain, especially for small structs on the order of the size of a double.
Currently they have a fixed max capture size of 64 bytes. Need to start by making this an error condition then make it dynamically allocate for larger.
Also need to include the function type somewhere so it works properly.
Currently every integer constant is a int32, need to make it use a large enough one to fit and error if it gets cropped of or something.
Need to ensure that the compiler doesn't try to compile the same project more than once in a build command.
Should start out by generating basic html file that lists types and functions so that one does not have to scan all the code to find it. Then have it load basic description from comment above the declaration.
Allow users to declare the value to initialize member variables to inline, much like the feature in C++. The value would automatically be assigned to the variable at the start of the destructor, assigning at the end could cause conflict or confusion if the user decides to assign to it in the constructor as well.
Ex: struct Type { int p = 5; }
Relies on #13
Add an interface for the compiler to import a jlib file just as it was a separate project. This could allow users to download prebuilt libraries and integrate them into their projects rather than having to build all of them from source
Just need to edit .jlib writer again
Add an option to automatically generate headers for your compiled code to make using it from other languages (especially C/C++) much easier.
Need to add on to .jlib writer to output these types properly.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.