Products · Product
Lua
Raised as a usability problem by 69 people on Hacker News over 19 years (2008–2026), in 57 threads.
No issue was raised by at least 3 people in 3 threads this year.
- 1
- 2
- 3
- 4
- 5
Every issue, all time, most people first
Variable name typo silently yields nil, causing subtle errorsUnreviewed
20082026- Undeclared variables yield nil silently and logic errors go unreported, so mistakes are easy to make2024-12-27
- Typos silently evaluate to nil, so errors surface far downstream with no hint why2024-06-01
- Typos and invalid accesses silently return nil instead of raising an error, making bugs hard to track down2021-10-10
1-based indexing makes calling C awkward and error-proneUnreviewed
20082026- Error-prone boilerplate for modules, classes, and arrays; 1-based indexing confusing2025-04-19
- 1-based indexing is non-intuitive for beginners and must be drilled into them2024-12-31
- One-based array indexing is hard to adjust to and causes off-by-one errors2022-02-20
Length operator gives inconsistent results for tables with nil gapsUnreviewed
20082026- Length operator gives undefined results on non-sequence tables, easy to trip over2024-06-01
- The # operator returns inconsistent lengths for tables with nil gaps, which is confusing2023-09-14
- The # operator's results on tables with nil gaps seem arbitrary and unintuitive2023-09-13
Error messages, 1-indexed arrays and syntax confuse newcomersUnreviewed
20082026- Lua's quirky design, like 1-based arrays and #array length, is counterintuitive to use2023-05-04
- Finds Lua's error messages, 1-indexed arrays and syntax confusing and off-putting2021-01-15
- Confusing metatables and 1-indexing make Lua hard to learn first2016-10-06
Basic syntax like braces, comments and comparisons keeps causing errorsUnreviewed
20082026- Syntax is tedious, variables are global by default, and errors are unhelpful2023-02-11
- Keeps producing errors from basic syntax like braces, comments and comparisons2016-05-02
- Syntax errors in scripts fail silently, so problems go unnoticed2010-02-12
Unreviewed issues were grouped by machine: Claude Haiku labelled each comment as a usability complaint, named what it's about and summed up the problem in a line, and a small model grouped similar problems. Nobody has checked them by hand. Expect mistakes.
The newest 50 complaints
- Lua's x and y or z ternary idiom is more confusing than a dedicated operator2026-06-25
- Never knows how to format Lua code for readability; formatter makes it worse2026-06-02
- Lua's verbosity was extremely frustrating to work with2026-06-02
- Changing the loop variable mid-loop causes unintuitive behavior with generators2025-12-23
- Error-prone boilerplate for modules, classes, and arrays; 1-based indexing confusing2025-04-19
- Lua's programming experience is considered awful by many developers2025-04-19
- Standard library functions like gsub are awkward and hard to work with2025-04-08
- 1-based indexing is non-intuitive for beginners and must be drilled into them2024-12-31
- Minimalist design forces each programmer to build own arrays, classes, idioms, hurting productivity2024-12-27
- Hard to track when to push and pop stack values, easy to leak memory2024-12-27
- Undeclared variables yield nil silently and logic errors go unreported, so mistakes are easy to make2024-12-27
- Constant off-by-one errors and coordinate mismatches when using Lua in a game engine2024-12-27
- A typo in a field name silently fails, creating bugs that are hard to find2024-12-26
- Confusing corner cases, such as tables built from lists behaving differently than expected2024-12-26
- Embedding requires tedious stack manipulation to do anything; language gives no help on mistakes2024-12-26
- Merged dict and array tables are painful; pairs gives undefined key order2024-08-03
- Slicing a list with table.unpack is an unintuitive, idiosyncratic workaround2024-06-24
- Loose structure makes some things confusing, such as messing with metatables2024-06-02
- Length operator silently returns an arbitrary border with no error, producing garbage output2024-06-02
- Length operator gives undefined results on non-sequence tables, easy to trip over2024-06-01
- Typos silently evaluate to nil, so errors surface far downstream with no hint why2024-06-01
- Hard to format Lua for readability; standard formatters often make it worse2024-05-27
- Found the language hard to work with: globals, stdlib, debugging and syntax all frustrated them2023-10-26
- The # operator returns inconsistent lengths for tables with nil gaps, which is confusing2023-09-14
- Array behavior is unintuitive and inconsistent, making a simple feature error-prone2023-09-13
- The # operator's results on tables with nil gaps seem arbitrary and unintuitive2023-09-13
- Lua's C API can call abort() and is poorly documented, making integration hard2023-06-17
- Prototype-style OO needs a lot of boilerplate via metatables2023-05-28
- Lua's quirky design, like 1-based arrays and #array length, is counterintuitive to use2023-05-04
- Lua's multithreading libraries produce overly complicated and verbose code for parallel work2023-02-15
- Syntax is tedious, variables are global by default, and errors are unhelpful2023-02-11
- Bulky keywords and inconsistent whitespace make code hard to read and write2023-01-26
- Hard to use __gc and weak tables correctly; mistakes cause memory leaks2022-05-24
- Ctrl-C exits the REPL instead of clearing input like Readline2022-05-13
- Lua integrations hard to use, with undocumented, mutation-heavy APIs and fragile hacks2022-04-07
- One-based array indexing is hard to adjust to and causes off-by-one errors2022-02-20
- Typos and invalid accesses silently return nil instead of raising an error, making bugs hard to track down2021-10-10
- Accessing a missing table field silently returns nil instead of raising an error, making bugs hard to find2021-08-06
- Runtime silently accepts nonexistent variables, so mistakes go unnoticed2021-01-15
- Typo'd variable silently becomes nil with no error, confusing beginners2021-01-15
- Typos in variable names silently return nil, so beginners can't tell what went wrong2021-01-15
- Finds Lua's error messages, 1-indexed arrays and syntax confusing and off-putting2021-01-15
- Extra parentheses silently change how arguments are passed, which is confusing and hard to predict2020-09-13
- Embedding requires dealing with the stack, which is mentally taxing2020-09-06
- The # operator gives unexpected results when sequences contain internal holes2020-09-06
- Lots of conflicting user-made split implementations, many broken, with no standard way to do it2020-09-06
- Working with tables is tiresome; you must remember what data they hold2020-06-07
- Hard to use or test without knowing hidden stack internals; implementation detail leaks through2020-05-29
- Length operator stops at the first nil, so arrays with nils behave unpredictably2020-02-01
- Can't find a way to deep link to specific x64 numbers2019-10-03