Linden Scripting Language, или LSL, е програмен език, използван от потребителите на Second Life (SL), виртуален свят създаден от компанията Linden Lab. LSL е скриптов език. Скриптовете могат да контролират поведението на обекти които се намират в SL. LSL има синтаксис подобен на „C“. Той позволява обектите да взаимодействат със Second Life и с интернет чрез имейл, XML-RPC, и HTTP.
LSL е събитийно-ориентиран скриптов език. Един скрипт се състои от променливи, функции, дефиниции и състояния. Във всяко състояние се съдържа описание на това, как да се реагира на събитията, които се случват докато програмата е във въпросното състояние. SL-системата изпраща събития на скрипта, като например време, движение, чат (от други аватари), електронна поща или контакти/сблъсъци (с други обекти във виртуалния свят). Скриптове могат да променят повечето аспекти на състоянието на обекта и да общуват с други предмети или аватари. След като един скрипт е добавен към даден обект и е стартиран, той започва да се изпълнява.
Скриптовете са тясно свързани с обектите от виртуалния свят (3D-обекти, модели). Обект в Second Life представлява някакъв предмет или аватар или напр. нещо невидимо за потребителя. Ако в един обект има няколко скрипта, те всички се изпълняват едновременно. Скриптовете могат да се поставят, като просто се пуснат върху обекта (drag & drop).
LSL разполага с над 300 функции. Потребителите могат да определят също така и допълнителни функции. Скриптовете в LSL се превръщат в машинен код след стартирането им от потребителя, чрез виртуалната машина на Second Life, която работи на сървърите на Linden Lab.
В LSL се използват цели числа (integers), числа с плаваща запетая, низове, ключове (UUID), вектори (използвани за 3D координация и RGB-настройки), и ротации. Няма масиви, вместо това се използват списъци с множество функции за адаптиране на програми, които изискват масиви. В LSL не се използват бази данни или файлове за съхранение на данни, скриптовете обаче продължават да работят, дори и когато потребителят не е онлайн, а ако един обект е запазен в личната директория, наречена Inventory, а след това повторно въведен в SL, той все още поддържа предишно си състояние. Механизмите за комуникация чрез HTTP, правят възможно и запазването на състоянието извън самия обект.
Някои функции в LSL имат вградено забавяне, което варира от 0.1-секундно закъснение, например при искане на данни от текстов файл (notecard) до 20-секундна пауза след изпращане на имейл. Забавянето предотвратява писане на скриптове, които биха могли да претоварят системните ресурси. Паметта, която е на разположение на LSL скриптове е ограничена на около 64 KiB, което е лимит за това, какво може да се направи с един скрипт, но все пак ако един скрипт се обръща към други скриптове се позволява на потребителя да заобиколи лимита от 64 KiB.
Някои специфични действия на LSL скриптовете изискват разрешение от потребителя. Това са:
Примерната програма „Hello world“ написана на LSL:
default { state_entry() { llSay(0, „Hello, Avatar!“); } touch_start(integertotal_number) { llSay(0, „Touched.“); } }