Skip to content

various grammar improvements#37

Open
Mr-Potato-l wants to merge 6 commits intojulelang:masterfrom
Mr-Potato-l:master
Open

various grammar improvements#37
Mr-Potato-l wants to merge 6 commits intojulelang:masterfrom
Mr-Potato-l:master

Conversation

@Mr-Potato-l
Copy link

@Mr-Potato-l Mr-Potato-l commented Feb 10, 2026

  • compiler
  • getting-started
  • low-level-helpers
  • project
  • runtime
  • some-questions

@koibtw koibtw changed the title Improved grammar in 6 sections! various grammar improvements Feb 10, 2026
Copy link
Member

@koibtw koibtw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

reviewed first 7 files

# 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.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Shows help about different commands.
Shows command-specific help.


## env
Show information about jule environment.
Show information about the jule environment.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- 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.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- 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.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- 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.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Avoids using a wrapper for a string if the string is compared with a literal.
- Avoids using wrapping strings compared with literals.

Copy link
Member

@mertcandav mertcandav left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- [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)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- [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)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- [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)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- [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)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- [Why is mutability not handled automatically for parameters of short function literals?](#why-is-mutability-not-handled-automatically-for-parameters-of-short-function-literals)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants