q2K BHP
Black History Portal
THE BHP WIRE —
HIDDEN TRUTHS
What's New!
THE JOURNEY THROUGH TIME

Explore Black History

Explore the people, places, events, achievements, struggles and stories that shaped our journey.

✊🏾

Civil Rights

Movements, leaders, victories and the continuing fight for equality.

⚙️

Black Inventors

Innovation, patents, science, technology and world-changing contributions.

🏆

Sports

Pioneers, champions, Negro Leagues, records, activism and excellence.

♟️

People

Meet the people whose lives, choices and achievements shaped the journey.

📍

Places

Black towns, communities, institutions and places where history happened.

📜

Events

Moments that changed communities, movements, institutions and the nation.

Enter a person, place, event, or topic.
MY'STORY

The MOVE Fire

This is a personal recollection on the Move fire on May 13, 1985 Philadelphia police fired thousands of rounds at the MOVE house, city officials approved dropping an explosive device on the roof, the resulting fire was allowed to burn, 11 people—including five children—died, and 61 homes were destroyed. Philadelphia City Council later called it a “brutal attack carried out by the City of Philadelphia on its own citizens” and acknowledged that no individual faced criminal consequences for the bombing. One timeline correction worth preserving for the BHP record: the major previous MOVE-police confrontation was August 8, 1978, about seven years before the bombing, not a year or two earlier. Officer James Ramp was killed, other police and firefighters were wounded, nine MOVE members were later convicted, and television cameras recorded police beating Delbert Africa during his arrest. The 1985 MOVE Commission later specifically criticized city planners for failing to adequately use lessons from that 1978 confrontation. And that actually strengthens the point you’re making: 1985 did not happen without precedent or institutional memory. There had already been a deadly confrontation with MOVE, years of conflict, negotiations and police involvement before Osage Avenue.

MORE →
BLACK FACTS
The Truths They Never Taught You...

Shirley Chisholm — Unbought and Unbossed

In 1968 Shirley Chisholm became the first Black woman elected to the United States Congress. In 1972 she launched a campaign for the Democratic presidential nomination, breaking another political barrier.

MORE →
BHP gathered finds from its connected research sources. Showing the 4 strongest Black History matches.
← BACK TO RESULTS
Wikipedia

Luau (programming language)

Luau
ParadigmMulti-paradigm: scripting, imperative, procedural, functional
FamilyLua
Designed byArseny Kapoulkine
DeveloperRoblox Corporation, Open source contributors
First appearedAugust 27, 2019; 7 years ago (2019-08-27)
Typing disciplineGradual, dynamic, structural
Memory managementGarbage collector
Implementation languageC++
LicenseMIT
Filename extensions.luau
Websiteluau.org
Influenced by
Lua 5.1, TypeScript, Python, LuaJIT

Luau (/ˈluː.aʊ/, LOO-ow) is an open-source scripting language derived from Lua 5.1. Developed by Roblox Corporation, it serves as the primary scripting language for the Roblox platform. Luau adds gradual typing, performance improvements, and sandboxing features to the base Lua language while maintaining backward compatibility with Lua 5.1.

The language was released to Roblox developers in August 2019 and became free and open-source software under an MIT License in November 2021.[1] Since its open-source release, Luau has been adopted by several video game developers outside of Roblox, including Remedy Entertainment for Alan Wake 2,[2] Digital Extremes for Warframe,[3] and Giants Software for Farming Simulator 2025.[4]

History

[edit]

Roblox originally used a modified version of Lua 5.1 as its scripting language. As the platform grew, developers began creating larger and more complex projects. The engineering team identified two main problems with standard Lua at this scale: the lack of a type system made error detection difficult, and the standard Lua interpreter had performance limits.[5]

The team considered adopting LuaJIT, a just-in-time compiler implementation of Lua known for high performance. However, LuaJIT had limited support for some platforms, more so video game consoles, and presented maintenance challenges. Roblox decided to create their own language based on Lua 5.1 instead.[6]

Luau was deployed on the Roblox platform on August 27, 2019. The language was initially called the "Faster Lua VM" (virtual machine) before receiving its current name.[6] On November 3, 2021, Roblox released Luau as open-source software under an MIT License, making the runtime, compiler, type checker, and linter publicly available on GitHub.[1]

Features

[edit]

Type system

[edit]

For data types, Luau implements gradual typing, allowing developers to add type annotations to code or leave it to dynamic typing. The type system includes type inference, which automatically determines variable types based on use without needing explicit annotations.[5]

-- Examples of common Luau type annotations
: number -- integers and floats
: string -- text
: boolean -- true or false
: any -- variable can be set to any type

local baseNumber: number = 1
-- baseNumber has the type "number"

local baseNumber = 1 :: number
-- 1 has been cast the type "number", overriding the inferred type

The language supports two typing modes. Strict mode needs more precise type annotations and aims to catch type errors before runtime. Non-strict mode is more permissive and designed to minimize false positives when gradually adding types to extant code. These modes can be set per module using directives.[7]

Luau uses structural typing rather than nominal typing. The type checker verifies that tables contain the needed fields with correct types instead of checking class names or inheritance relationships. Luau was the first language to implement semantic subtyping for a large user base, using type normalization to check subtype relationships.[7]

Performance

[edit]

The Luau runtime is implemented in C++ as a new virtual machine rather than a modification of the standard Lua VM.[8] The compiler performs several optimizations before code execution, including constant folding, dead code elimination, and peephole optimization. The interpreter uses inline caching to improve table field access performance.

Benchmarks show Luau's interpreter performing comparably to LuaJIT's interpreter mode. When LuaJIT uses just-in-time compilation, it maintains a performance advantage of approximately 1.6x in some tests.[9]

In October 2023, Luau added native code generation capability.[10] This feature compiles Luau bytecode directly to machine code for x64 and ARM64 architectures, including processors with Advanced Vector Extensions 1 (AVX1) support and Apple silicon. Performance improvements from native code generation typically range from 1.5x to 2.5x for computationally intensive code.[10]

The compiler can process about 950,000 lines of code per second on a Ryzen 5900X processor with all optimizations enabled.[8]

Syntax

[edit]

Luau maintains syntactic compatibility with Lua 5.1 while adding features from other languages. The language supports augmented assignment operators (+=, -=, *=, etc.).[11] String interpolation was added in February 2023, allowing variables to be embedded directly in string literals using backtick syntax.[12][13] Luau also includes conditional expressions similar to ternary operators in other languages.[14]

local baseNumber: number = 1

-- Augmented assignment
baseNumber += 1 

-- Conditional expressions 
local isBaseNumberTwo: number = if baseNumber == 2 then true else false

-- String interpolation
print(`The baseNumber is {baseNumber}`)
--> The baseNumber is 2

Additional features include the continue keyword to skip the remaining code in a loop's current irritation and move to the next one[15], and the const keyword for local variable bindings that cannot be modified once initiated.[16]

const fruits: {string} = table.freeze({"Apple", "Pear", "Banana"})
const pearFruit: string = "Pear"
local foundPearFruit: boolean = false

for i: number, fruit: string in fruits do
    if pearFruit ~= fruit then
        continue
    end
    
    print("Found pear fruit!")
    foundPearFruit = true
    
    break
end

pearFruit = "Apple" -- fail

Sandboxing

[edit]

Luau includes security features for running untrusted code. The standard library does not provide access to the file system or operating system. The runtime enforces resource limits on memory use and can interrupt long-running code to prevent infinite loops from blocking execution.[8]

Memory management

[edit]

The garbage collector uses an incremental design with a PID controller for heap pacing, based on techniques from the Go garbage collector.[8] This reduces pause times compared to stop-the-world collection. The system includes optimizations for closures, upvalues, and weak tables.

Adoption

[edit]

Roblox

[edit]

Luau is the primary scripting language for the Roblox platform, handling game logic, physics, and user interface systems across millions of user-created experiences.

Roblox-like platforms

[edit]

Luau also serves as a scripting language for platforms such as Polytoria 2.0 and Vortex, which were inspired to some extent by the aesthetic of old Roblox.

Remedy Entertainment

[edit]

Remedy Entertainment replaced their proprietary scripting language with Luau in the Northlight engine for Alan Wake 2. The migration removed approximately 80,000 lines of legacy code. Remedy developed a Visual Studio Code language server extension for Luau integration.[2]

Digital Extremes

[edit]

Digital Extremes migrated Warframe from their existing Lua implementation to Luau. The change was motivated by improvements in garbage collection and memory efficiency.[3]

Giants Software

[edit]

Giants Software adopted Luau for Farming Simulator 2025, moving from LuaJIT. The company provides modding tools through the Giants Developer Network that support Luau scripting.[4]

Linden Lab

[edit]

In December 2025, Linden Lab released SLua, a Luau-based scripting system for Second Life. SLua serves as an alternative to the Linden Scripting Language.[17]

Technical details

[edit]

Compiler

[edit]

The Luau compiler operates in multiple passes, first parsing source code into an abstract syntax tree before generating bytecode.[18] The compiler offers three optimization levels. Level 0 applies minimal optimizations. Level 1 (default) performs constant folding, upvalue optimization, and peephole optimization while preserving debugging information. Level 2 adds function inlining and loop unrolling.

The bytecode uses a register-based virtual machine with approximately 200 available registers. Instructions are 4 bytes in length, with constants stored in a separate constant pool.[18]

Research

[edit]

The Luau team has published several academic papers on the type system. The initial paper, "Position Paper: Goals of the Luau Type System," was presented at HATRA 2021.[5] Subsequent papers include "Goals of the Luau Type System, Two Years On" (2023) and "Towards an Unsound But Complete Type System" (2024).[19]

See also

[edit]

References

[edit]
  1. ^ a b "Luau Goes Open-Source". Luau-lang.org. 3 November 2021. Archived from the original on 3 August 2024. Retrieved 24 December 2024.
  2. ^ a b Gajda, Szymon (26 October 2023). "How Northlight makes Alan Wake 2 shine". Remedy Entertainment. Retrieved 24 December 2024.
  3. ^ a b Kapoulkine, Arseny (28 November 2023). "It is time". zeux.io. Retrieved 24 December 2024.
  4. ^ a b "Modding Tools for Farming Simulator 25". Giants Software Developer Network. Retrieved 24 December 2024.
  5. ^ a b c Brown, Lily; Friesen, Andy; Jeffrey, Alan (2021). Position Paper: Goals of the Luau Type System (PDF). HATRA '21: Human Aspects of Types and Reasoning Assistants. Retrieved 24 December 2024.
  6. ^ a b "Luau Progress 2022". Luau-lang.org. 23 June 2022. Retrieved 24 December 2024.
  7. ^ a b "Luau Recap: December 2021". Luau-lang.org. 24 January 2022. Retrieved 24 December 2024.
  8. ^ a b c d "Performance". Luau.org. Retrieved 24 December 2024.
  9. ^ "Luau Goes Open Source". Hacker News. 3 November 2021. Retrieved 24 December 2024.
  10. ^ a b "Luau Recap: October 2023". Luau-lang.org. 3 November 2023. Retrieved 24 December 2024.
  11. ^ "Compound assignment using op= syntax". Luau RFCs. Retrieved 2026-05-17.
  12. ^ "Luau Recap: February 2023". Luau-lang.org. 3 March 2023. Retrieved 24 December 2024.
  13. ^ "String interpolation". Luau RFCs. Retrieved 2026-05-17.
  14. ^ "if-then-else expression". Luau RFCs. Retrieved 2026-05-17.
  15. ^ "continue statement". Luau RFCs. Retrieved 2026-05-17.
  16. ^ "Const Keyword". Luau RFCs. Retrieved 2026-05-17.
  17. ^ "SLua Open Beta FAQs". Linden Lab. 2 December 2025. Retrieved 24 December 2025.
  18. ^ a b "Compiler". Luau.org. Retrieved 24 December 2024.
  19. ^ "Research". Luau-lang.org. Retrieved 24 December 2024.
[edit]

Source: Wikipedia. Article content is retrieved live through the MediaWiki API.

No preview image
Wikipedia

Gradual typing

Gradual typing is a type system that allows for both static typing and dynamic typing but enforces types at runtime. Gradual typing allows software developers to choose either type paradigm as appropriate, from within a single language. In many cases gradual typing is added to an existing dynamic language, creating a derived language allowing for, but not requiring, static typing to be used. In some cases, a language uses gradual typing from the start. However, there are performance and implementation complexity tradeoffs compared to dynamic or optional typing.

MORE →
Wikipedia

Luau (programming language)

Luau (, LOO-ow) is an open-source scripting language derived from Lua 5.1. Developed by Roblox Corporation, it serves as the primary scripting language for the Roblox platform. Luau adds gradual typing, performance improvements, and sandboxing features to the base Lua language while maintaining backward compatibility with Lua 5.1. The language was released to Roblox developers in August 2019 and became free and open-source software under an MIT License in November 2021. Since its open-source release, Luau has been adopted by several video game developers outside of Roblox, including Remedy Entertainment for Alan Wake 2, Digital Extremes for Warframe, and Giants Software for Farming Simulator 2025.

MORE →
No preview image
Wikipedia

Principal type

In type theory, a type system is said to have the principal type property if, given a term and an environment, there exists a principal type for this term in this environment, i.e. a type such that all other types for this term in this environment are an instance of the principal type. The principal type property is a desirable one for a type system, as it provides a way to type expressions in a given environment with a type which encompasses all of the expressions' possible types, instead of having several incomparable possible types. Type inference for systems with the principal type property will usually attempt to infer the principal type. For instance, the ML system has the principal type property and principal types for an expression can be computed by Robinson's unification algorithm, which is used by the Hindley–Milner type inference algorithm. However, many extensions to the type system of ML, such as polymorphic recursion, can make the inference of the principal type undecidable. Other extensions, such as Haskell's generalized algebraic data types, destroy the principal type property of the language, requiring the use of type annotations or the compiler to "guess" the intended type from among several options. The notion was introduced by Curry and Feys around 1958, under the name of "principal functional character". The "principal type" name (as well as "type scheme") is due to Hindley (1969). The principal typing property requires that, given a term, there exist a typing (i.e. a pair with a context and a type) which is an instance of all possible typings of the term. The principal typing property can be confused with the principal type property but is distinct. The principal type property relies on the context as an input to determine the type, but the principal typing property outputs the context as a result. The principal typing property allows "compositional" type reasoning, meaning the analysis can be performed on the parts in any order. The Hindley–Milner type system is not compositional in this sense due to how let val x = e1 in e2 end is typed first by evaluating the type of e1 and using the result to type e2. Thus, it is said that ML has principal types but not principal typings. The simply typed lambda-calculus, on the other hand, has both of these properties. Generally speaking, type systems based on intersection types also have the principal typings property. This may not be computable, although if one limits intersections to rank-2 or with the introduction of some additional variables to any finite rank, then principal typings are computable for intersection types. These type systems been proposed for various applications, typically focused on incremental compilation or gradual typing.

MORE →
No preview image
Wikipedia

Hack (programming language)

Hack is a programming language for the HipHop Virtual Machine (HHVM), created by Meta (formerly Facebook) as a dialect of PHP. The language implementation is free and open-source software, licensed under an MIT License. Hack allows use of both dynamic typing and static typing. This kind of a type system is called gradual typing, which is also implemented in other programming languages such as ActionScript. Hack's type system allows types to be specified for function arguments, function return values, and class properties; however, types of local variables are always inferred and cannot be specified.

MORE →
TOPIC OF THE DAY

Greenwood / Black Wall Street

Before the 1921 destruction of Tulsa’s Greenwood District, Black residents had created a remarkable center of business and community life. The district included stores, professional offices, entertainment venues and homes owned by Black citizens. Understanding Greenwood means learning what was built—not only what was burned.

MORE →
TRIVIA QUESTION OF THE DAY

Which Supreme Court case ruled state-sponsored public-school segregation unconstitutional?

Brown v. Board of Education in 1954.