Conversation
| # Clang | ||
|
|
||
| Clang is a C/C++ compiler using LLVM. Jule gives priority support to Clang and is recommended to be used with Clang whenever possible. Jule and related projects use Clang as the backend compiler and are primarily tested for Clang. | ||
| Clang is a C/C++ compiler using LLVM. Jule gives priority support to Clang and it's recommended to be used with Clang whenever possible. Jule and related projects use Clang as the backend compiler and are primarily tested for Clang. |
There was a problem hiding this comment.
i think this one is fine actually
| ### Primary Support | ||
|
|
||
| Primary support are primarily supported, most important and most recommended compilers. When a problem occurs in these compilers, priority is given to the solution and it is tried to be solved quickly. | ||
| Primary support is the primarily supported, most important and most recommended compilers. When a problem occurs in these compilers, priority is given to the solution and it is tried to be solved quickly. |
There was a problem hiding this comment.
| Primary support is the primarily supported, most important and most recommended compilers. When a problem occurs in these compilers, priority is given to the solution and it is tried to be solved quickly. | |
| Primary support refers to the most important and recommended compilers. When a problem occurs with these compilers, it is given priority and addressed as quickly as possible. |
| ### Partial Support | ||
|
|
||
| Partial support is compilers that are officially supported but not always guaranteed to be as accurate as primary supported compilers. Even if they can compile your code, there is also no guarantee that the executable will execute as expected. | ||
| Partial support is compilers that are officially supported but not always guaranteed to be as accurate as primary support compilers. Even if they can compile your code, there is no guarantee that the executable will run as expected. |
There was a problem hiding this comment.
| Partial support is compilers that are officially supported but not always guaranteed to be as accurate as primary support compilers. Even if they can compile your code, there is no guarantee that the executable will run as expected. | |
| Partial support covers compilers that are officially supported but offer lower accuracy and reliability than primary support compilers. Code may compile successfully, but correct runtime behavior is not guaranteed. |
| In compile mode, julec will show you the build command itself on the command line, which is used during compilation. You can also set the mod to transpile and choose to compile manually, or you can write a script that compiles the code after you have it in C++ form, using the transpile mode to experience compile mode. | ||
|
|
||
| As result we have a executable machine code result of our program. | ||
| As a result we have an executable machine code result of our program. |
There was a problem hiding this comment.
| As a result we have an executable machine code result of our program. | |
| As a result, we get an executable machine code of our program. |
|
|
||
| ## help | ||
| Shows help about of commands. | ||
| Shows help about different commands. |
There was a problem hiding this comment.
| Shows help about different commands. | |
| Shows command-specific help. |
|
|
||
| ## env | ||
| Show information about jule environment. | ||
| Show information about the jule environment. |
There was a problem hiding this comment.
| Show information about the jule environment. | |
| Shows information about the jule environment. |
| Enables special optimizations for the built-in `append` function. | ||
|
|
||
| - It prevents the allocating and destruction of a new slice by adding slice literals element-by-element if append used at single assignment statement. | ||
| - It prevents the allocating and destruction of a new slice by adding slice literals element-by-element if append is used at single assignment statement. |
There was a problem hiding this comment.
| - It prevents the allocating and destruction of a new slice by adding slice literals element-by-element if append is used at single assignment statement. | |
| - Prevents allocating and destruction of a new slice by adding slice literals element-by-element if append is used at single assignment statements. |
|
|
||
| - Simplifies expressions such as `len([]byte(myStr))` to `len(myStr)`. | ||
| - Converts expressions such as `len([]rune(myStr))` to more efficient variant which is avoids making allocation. | ||
| - Converts expressions such as `len([]rune(myStr))` to a more efficient variant which avoids making allocation. |
There was a problem hiding this comment.
| - Converts expressions such as `len([]rune(myStr))` to a more efficient variant which avoids making allocation. | |
| - Converts expressions such as `len([]rune(myStr))` to a more efficient variant which avoids allocation. |
|
|
||
| - Removes unreachable if-else chain cases such as having constant false expressions. Applied for if-else chains, and match-cases. | ||
| - Remove unnecessary trailing cases that comes after constant true case. Applied for if-else chains, and match-cases. | ||
| - Removes unnecessary trailing cases that come after constant true case. Applied for if-else chains, and match-cases. |
There was a problem hiding this comment.
| - Removes unnecessary trailing cases that come after constant true case. Applied for if-else chains, and match-cases. | |
| - Removes unnecessary trailing cases that come after constant true cases. Applied for if-else chains and match-cases. |
| - Avoids using wrapper for strings if string compared with literal. | ||
| - Eliminates and simplifies predictable boolean expressions. Such as `if (x || true)` will be handled as `if (true)` or `if (x && false)` will be handled as `if (false)`. | ||
| - Eliminates predictable comparison expressions. Such as `if (x > x)` will be handles ad `if (false)` or `if (x == x)` will be handled as `if (true)`. | ||
| - Avoids using a wrapper for a string if the string is compared with a literal. |
There was a problem hiding this comment.
| - Avoids using a wrapper for a string if the string is compared with a literal. | |
| - Avoids using wrapping strings compared with literals. |
mertcandav
left a comment
There was a problem hiding this comment.
Generally looks good to me.
But please remember to update the jump-table of the Some Questions section.
| - [Why does Jule use exceptionals instead of other error handling methods?](#why-does-jule-use-exceptionals-instead-of-other-error-handling-methods) | ||
| - [Why do exceptionals not support combining?](#why-do-exceptionals-not-support-combining) | ||
| - [Will Jule always use C++ as backend?](#will-jule-always-use-c-as-backend) | ||
| - [Why does not Jule have built-in methods?](#why-does-not-jule-have-built-in-methods) |
There was a problem hiding this comment.
| - [Why doesn't Jule have built-in methods?](#why-doesn-t-jule-have-built-in-methods) |
| - [Why is `self` the only receiver parameter?](#why-is-self-the-only-receiver-parameter) | ||
| - [Why are some packages in the standard library adopted from Go?](#why-are-some-packages-in-the-standard-library-adopted-from-go) | ||
| - [Why were default field values removed?](#why-were-default-field-values-removed) | ||
| - [Why do not captured variables of closures need to be specified?](#why-do-not-captured-variables-of-closures-need-to-be-specified) |
There was a problem hiding this comment.
| - [Why don't captured variables of closures need to be specified?](#why-don-t-captured-variables-of-closures-need-to-be-specified) |
| - [Why are some packages in the standard library adopted from Go?](#why-are-some-packages-in-the-standard-library-adopted-from-go) | ||
| - [Why were default field values removed?](#why-were-default-field-values-removed) | ||
| - [Why do not captured variables of closures need to be specified?](#why-do-not-captured-variables-of-closures-need-to-be-specified) | ||
| - [Why do not allow choose how to capture variables of closures?](#why-do-not-allow-choose-how-to-capture-variables-of-closures) |
There was a problem hiding this comment.
| - [Why is choosing how to capture variables of closures not allowed?](#why-is-choosing-how-to-capture-variables-of-closures-not-allowed) |
| - [Why were default field values removed?](#why-were-default-field-values-removed) | ||
| - [Why do not captured variables of closures need to be specified?](#why-do-not-captured-variables-of-closures-need-to-be-specified) | ||
| - [Why do not allow choose how to capture variables of closures?](#why-do-not-allow-choose-how-to-capture-variables-of-closures) | ||
| - [Why the function keyword needed for short function literals?](#why-the-function-keyword-needed-for-short-function-literals) |
There was a problem hiding this comment.
| - [Why is the function keyword needed for short function literals?](#why-is-the-function-keyword-needed-for-short-function-literals) |
| - [Why do not captured variables of closures need to be specified?](#why-do-not-captured-variables-of-closures-need-to-be-specified) | ||
| - [Why do not allow choose how to capture variables of closures?](#why-do-not-allow-choose-how-to-capture-variables-of-closures) | ||
| - [Why the function keyword needed for short function literals?](#why-the-function-keyword-needed-for-short-function-literals) | ||
| - [Why mutability is not handled automatically for parameters of short function literals?](#why-mutability-is-not-handled-automatically-for-parameters-of-short-function-literals) |
There was a problem hiding this comment.
| - [Why is mutability not handled automatically for parameters of short function literals?](#why-is-mutability-not-handled-automatically-for-parameters-of-short-function-literals) |
Uh oh!
There was an error while loading. Please reload this page.