Microsoft to Develop Golua

Golua is Lua 5.3 engine, implemented in Go programming language
19 November 2018   1519

Microsoft has released to the public golua engine designed to execute scripts in the Lua language. The development is distributed under the open MIT license and is available in the GitHub repository. The project is implemented in the language of Go.

There are already several implementations of Lua VM in Go, for example, DCLua, GoLua or glua. However, the developers state that they needed support for the syntax of version 5.3, and none of the existing tools could offer this either now or in the near future. In addition, simple and clear software interfaces were required to integrate the engine with Go.

The new development is based on the architecture, focused on convenient debugging, search and error handling. Although the creators of golua recognize that they have not yet managed to achieve full compliance with specification 5.3, they intend to further develop the project.

Lua is an open source scripting programming language interpreter. It is distinguished by simple integration into other languages ​​and the possibility of implementing a large number of software entities with a minimum of syntax tools.

The official Lua interpreter is written in C. Go was developed by Google as a replacement for C and C ++ and has the potential to provide greater speed. The company maintains and regularly updates its development; at the end of the summer of 2018, Go 1.11 was released.

Linux Kernel Bug to Affect Apps With AVX

The most often observed bugs due to this issue occurs in programms, written in Go
27 November 2019   546

Starting with release 5.2, an error has occurred in the Linux kernel that leads to violation of the contents of the AVX register when a signal is returned from the handler that is processed when a page-fault is thrown. The problem occurs when starting multi-threaded programs ("-pthread"), which have calculations with the AVX register, in case of building the kernel in GCC 9 (when building in earlier releases of GCC, an error does not occur, since GCC 9 caches the address of the thread-local variable in the register, and earlier versions of GCC download it every time).

The problem causes the program to terminate prematurely with a memory corruption error. The most noticeable and often observed manifestation of the error was the collapse of applications written in Go. Due to a noted problem, Go programs terminate prematurely, usually with the errors "runtime error: invalid memory address or nil pointer dereference", "runtime: unexpected return pc", and "segmentation violation". In the kernel, the error remains uncorrected. We consider the possibility of adding changes to Go runtime to selectively work around errors on problematic Linux kernels, at the cost of additional overhead.