presented the release of the programming language go 1.19 , which It is developing Google with the participation of a community as a hybrid solution that combines the high performance of compiled languages with such advantages of script languages as the ease of coded, the speed of development and security from errors. The project code is distributed under the license BSD.
syntax GO is based on the usual elements of the SI language with separate borrowing from Python. The language is quite concise, but the code is easily read and perceived. The Code in the GO language is compiled into separate binary executable files performed by native, without the use of a virtual machine (the profiling modules, debugging and other subsystems for identifying problems at the stage of execution are integrated in the form of Runtime components ), which allows you to achieve performance comparable to programs in SI.
The project is initially developed with an eye on multi -flow programming and effective work on multi -core systems, including providing means implemented at the level of operators for organizing parallel calculations and interaction between parallel methods performed. The language also provides built -in protective equipment against the permissible areas of the allocated memory blocks and provides the ability to use the garbage collector.
Among changes in the new issue:
- Work has been carried out to hone the added support in the last issue of generalized functions and types ( trifles ), with the help of which the developer can determine and use functions designed to work at once types. Optimization was carried out – the performance of some programs using generics increased by 20%.
- in documenting comments Support for links, lists and a simpler syntax of the determination of headlines. In the GOFMT utility, formatting is provided taking into account the advanced possibilities of comments with the documentation on the API.
- Reviewed Memory model for the language of GO, which is brought into line with models of languages C, C ++, Java, JavaScript, Rust and Swift that do not support consistent coordinated atomic values. To simplify the use of atomic values in the Sync/Atomic package, new types , such as atomic.int64 and atomic.pointer [ T]. Changing the memory model did not affect compatibility with the previously written code.
- In order to strengthen protection, the OS/Exec module now does not take into account relative ways when revealing variable surroundings PATH (for example, when determining the path for the executable file, the current catalog is now not checked).