Beta 0.0.2 Released! #30
Locked
mertcandav
announced in
Announcements
Replies: 1 comment
-
Thank you for this nice update. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Beta 0.0.2 Release
This release focuses on further solidifying the compiler rather than adding new features. The first version released, Beta 0.0.1, was a version released after the bootstrapping phase. Beta 0.0.2, on the other hand, main purpose is to be more tested and bug-fixed, better optimized. Of course, this version brings with it a few new features.
Of course, this is not a stable release and may contain serious bugs. But Beta 0.0.1 was a rather buggy version. A more stable version therefore had to be developed quickly. Here is Beta 0.0.2 release. This release fixes many instability issues and fixes bugs. For the best Jule experience, we always recommend using the latest release.
New Features
Beta 0.0.2 adds many experimental features. However, these features have been well tested and used for Beta 0.0.2 release, so they are not expected to cause serious problems.
Compiler Optimizations
Compiler optimizations include some optimizations to make the generated object code more efficient and productive. Since this is the first release with optimizations added, it doesn't add any serious optimization support. But it adds dead code elimination which can significantly reduce your C++ compiler's compilation times, and copy optimization to reduce copies of runtime.
Here is the manual page of compiler optimizations.
Cross Transpilation
The cross transpilation feature allows your compiler to generate IR code for different platforms, regardless of the platform you are on. This way you can create an IR and build on that platform your cross-platform apps, even if you don't have JuleC build for target platform.
Here is the manual page of cross transpilation.
Capacity for Slices
This is more of an optimization than an addition. Slice now has a more capacity-oriented algorithm. For example, the old implementation of built-in
append
function allocates a new slice each time and performs copying. Now, if there is enough capacity, it adds to the destination slice and returns the slice itself, if there is not enough capacity, it allocates a new slice and copies the elements. This is an improvement that can significantly improve performance.Object Cleaning for Compile Mode
A simple cleaning process. When you use your compiler in build mode, the generated objects are left if you are using Beta 0.0.1 release. With Beta 0.0.2, your object directories are completely destroyed after compilation.
Changes
JuleC
1
for failed executionsany
typesAPI
static_cast
instead ofreinterpret_cast
as possiblearray.hpp
have not include directive for<array>
setup_envrionment_variables
function tojule
namespaceenvironment_variables
global variable tojule
namespacejule::Trait<T>
: fix allocationsClone
derive's support for slicesStandard Library
std::reflect
append
function: update algorithm and no longer takes immutable source argumentpush
method ofVector[T]
no longer takes variadic argumentsset
,append
,merge
,merge_front
,remove_range
,insert
, andslice
methods toVector[T]
parts
,range_last
, andrange
functionsOS
, andARCH
globalsENV
globalBeta Was this translation helpful? Give feedback.
All reactions