Download
(2 Kb)
Download
Updated: 02/24/20 02:38 AM
Compatibility:
Harrowstorm (5.3.5)
Dragonhold (5.2.5)
Scalebreaker (5.1.5)
Elsweyr (5.0.5)
Updated:02/24/20 02:38 AM
Created:03/02/14 04:10 PM
Monthly downloads:6,322
Total downloads:1,401,597
Favorites:1,002
MD5:
LibStub  Popular! (More than 5000 hits)
Version: 1.0 r7
by: sirinsidiator, Seerah

LibStub was replaced by features in the game and won't be updated anymore!
If you are using an addon which still relies on LibStub, either ask the author to remove it or you just need to live with it.



Addon Authors: LibStub is no longer needed if you plan to write a new library.
The game can manage the versioning itself, so just write your library like you would any other addon and make sure you add the "IsLibrary" and "AddOnVersion" directive.
Code:
## AddOnVersion: 6
## IsLibrary: true
Check the wiki for more more details about the directives.

In order to encourage moving away from LibStub, starting with r7 it will print a deprecation warning in chat in case any of the installed addons uses LibStub to reference a library. This message can be disabled with "/libstubwarning off". Authors can install LibDebugLogger and the DebugLogViewer in order to see where offending calls to LibStub come from. Simply enable stack trace logging via "/debuglogger stack on", reload the UI and click on the warnings in the log.


LibStub was written for World of Warcraft by Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel and joshborke. It was ported to Elder Scrolls Online by Seerah. The below description was copied from WowAce with a few minor revisions.


LibStub is a minimalistic versioning library that allows other libraries to easily register themselves and upgrade. It is meant to be a cross-community library sharing system.

LibStub is hereby placed in the Public Domain


LibStub-1.0 API

:GetLibrary(major [, silent])
Returns
The table instance of a registered library or nil if not found and the minor version of the library as the second return value.
Arguments
major
The name of the library you are requesting
silent
(Optional) Suppresses errors when the library is not found. You can pass LibStub.SILENT for better readability
:IterateLibraries()
Returns
An iterator over the registered major libraries.
:NewLibrary(major , minor)
Returns
The table to be used by the library as well as the minor version of the previously registered library, if any.
Arguments
major
The name of the library you are requesting
minor
The minor for the registering library

Who uses LibStub?
LibAddonMenu-1.0
... and hopefully many more to come!

How to include LibStub in a library or addon

Library
  • get a copy of the current version
  • copy LibStub.lua into your library's folder
  • set up your <library>.txt file to load LibStub.lua (in case your library supports being installed standalone)
  • don't set LibStub as OptionalDependsOn

AddOn
  • get a copy of the current version
  • copy LibStub.lua into your addon's folder or a subfolder of it
  • set up your <addon>.txt file to load LibStub.lua
  • don't set LibStub as OptionalDependsOn


Basic Example

Lua Code:
  1. local lib = LibStub:NewLibrary("MyLibrary-1.0", 1)
  2.  
  3. if not lib then
  4.   return    -- already loaded and no upgrade necessary
  5. end
  6.  
  7. function lib:SomeFunction()
  8.   -- do stuff here
  9. end
  10.  
  11. function lib:SomeOtherFunction()
  12.   -- do other stuff here
  13. end
1.0 r7
- added deprecation chat warning
- added LibDebugLogger support
- api bump

1.0 r6
- added IsLibrary flag to manifest
- api bump (see below)

1.0 r5
- api bump (for all the poor people who don't like to check a checkbox)

1.0 r4
- added a named constant for the silent flag as proposed by merlight

1.0 r3
- added support for fractional numbers in minor library version as proposed by merlight

1.0 r2
- fixed error handling

1.0 r1
- updated version number in LibStub.txt to match internal Major, minor revisions (1.0 r1 instead of 1.0.1)
Archived Files (7)
File Name
Version
Size
Uploader
Date
1.0 r6
1kB
sirinsidiator
05/21/19 03:03 PM
1.0 r5
1kB
sirinsidiator
11/02/18 08:08 AM
1.0 r4
1kB
sirinsidiator
07/23/15 02:57 PM
1.0 r3
1kB
sirinsidiator
06/14/15 12:55 PM
1.0 r2
2kB
Seerah
07/13/14 09:24 PM
1.0 r1
2kB
Seerah
03/14/14 07:29 PM
1.0.1
2kB
Seerah
03/02/14 04:10 PM


Post A Reply Comment Options
Unread 08/01/20, 01:57 PM  
Meerchaum

Forum posts: 2
File comments: 14
Uploads: 0
Just a Thank You

I appreciate all the tools that you and other Developers create that greatly enhance my gaming experience.
At no pay and little appreciation to the time you take to provide me and almost 1 million other players a more enjoyable game.
Report comment to moderator  
Reply With Quote
Unread 05/29/20, 06:43 AM  
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1566
File comments: 1111
Uploads: 41
Re: LibStub Deprecated

It's all written in the addon description on the info tab. Don't tell me you found the comment section, but miss that?
Report comment to moderator  
Reply With Quote
Unread 05/29/20, 06:26 AM  
Krahnin

Forum posts: 0
File comments: 11
Uploads: 0
LibStub Deprecated

I am also getting the LibStub is deprecated message on login. That said, I’m not sure where to find the debugger to see which addons are calling to it. Where can I find that information?
Report comment to moderator  
Reply With Quote
Unread 04/12/20, 08:25 AM  
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1566
File comments: 1111
Uploads: 41
Originally Posted by Yudo_Officiel
je n'en peux plus sa fait 8h que je cherche une solution a votre bug a chaque fois que je lance mon eu mon jeu dit qu'il y'a un problême circulaire avec libMapPins-1.0 et libMapPins-1.0 impossible donc de lancer mon extension , j'ai l'habitude de jouer avec les fichier et les code de jeu mais la votre truc est abominablement compliquer , je n'y comprend ABSOLUMENT rien j'aimerai beaucoup une explication simple et précise . j'ai beau traduire en francais relire faire des teste encore et encore je ne comprend pas un mot de se que vous dites , j'ai passer toute ma nuit a chercher a comprendre en vain et sa me rend fou car c'est le seul fichier qui ne va pas et qui empeche que mon extension se lance ... aider moi c'est juste impossible a comprendre .
I don't speak French, but judging from what google translate says, it seems you are asking in the wrong comment section?
Report comment to moderator  
Reply With Quote
Unread 03/09/20, 04:26 AM  
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1566
File comments: 1111
Uploads: 41
Originally Posted by ViTosS1
I'm receiving LibStub Deprecated warning everytime I log in the game, I checked the trace and the error is coming from LibGroupSocket (this comes with RaidNotifier and I can't update it for some reason it doesn't even show in addon list when RaidNotifier is disabled) and the other error is coming from AiM Synergy Tracker, the only way to stop this warning and fix it is by disabling these both 2 addons? Can I still use them with the warning showing? What would be the problem of it? Ty!
As you have said in the beginning it is a warning, not an error. It just means you should notify the authors of those addons/libraries so they can update to no longer use LibStub and avoid errors when libraries are one day changed to no longer provide their reference via it.
You can also disable the warning so it no longer shows.
Report comment to moderator  
Reply With Quote
Unread 03/08/20, 08:54 PM  
ViTosS1

Forum posts: 0
File comments: 6
Uploads: 0
I'm receiving LibStub Deprecated warning everytime I log in the game, I checked the trace and the error is coming from LibGroupSocket (this comes with RaidNotifier and I can't update it for some reason it doesn't even show in addon list when RaidNotifier is disabled) and the other error is coming from AiM Synergy Tracker, the only way to stop this warning and fix it is by disabling these both 2 addons? Can I still use them with the warning showing? What would be the problem of it? Ty!
Report comment to moderator  
Reply With Quote
Unread 03/03/20, 07:49 AM  
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1566
File comments: 1111
Uploads: 41
Originally Posted by wambo
Any addon that could be recommended for looking at the differences between "LibStub" old version and newer "LibStub-free" version?
You can take a look at LibSlashCommander which I recently updated to no longer rely on LibStub. Take note that it still uses it as an optional dependency and checks if LibStub is loaded, since older versions of the lib may be loaded the old way as part of an addon's code. At some point in the future when most addons have been adjusted to no longer embed libraries or use LibStub I may remove that too, but for now it's better to keep it to avoid errors that may happen otherwise.
Report comment to moderator  
Reply With Quote
Unread 03/02/20, 07:34 PM  
wambo
AddOn Author - Click to view AddOns

Forum posts: 38
File comments: 456
Uploads: 3
Any addon that could be recommended for looking at the differences between "LibStub" old version and newer "LibStub-free" version?
Report comment to moderator  
Reply With Quote
Unread 02/25/20, 12:31 PM  
desertforce

Forum posts: 5
File comments: 154
Uploads: 0
Thanks for the answer ...

I will try it out on the addon *AutoInvite*... That still uses - at least the version I have - LibStub... As far as I can tell there is only the LibStub folder in the addon and the *Code-Line* (lib/LibStub/LibStub.lua) in the AutoInvite.txt file... I will remove that line, replace it with the global code - as mentioned on the mainpage here - and then I will delete the LibStub folder from it and see what will happen ...


Best regards
De-chan


Originally Posted by sirinsidiator
Originally Posted by desertforce
Hi... I've got a question...

For removing the LibStub:

For an Addon to keep working, will it be only necessary to change the entries within the *.txt manifest before removing the "Libstub" folder from the addon or will it be necessary to change more..?

Just asking because if only the *.txt manifest needs to be changed I could do it myself without the need to wait for an update from the author ... But if it would take more, then I would need to wait for updates or try to look for new/other addons to replace some older ones ...

Best regards
De-chan
Removing LibStub will require changes to the addon code. In most cases it should be as simple as finding the line where LibStub is called (as explained in the LibStub addon description) and replace it with the global variable provided by that library. If a library hasn't been updated to provide a global variable yet, it means that needs to happen first. After all calls to LibStub have been removed, the LibStub files can be deleted from the addon and all remaining traces removed from the manifest.
Report comment to moderator  
Reply With Quote
Unread 02/24/20, 10:01 AM  
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1566
File comments: 1111
Uploads: 41
Originally Posted by desertforce
Hi... I've got a question...

For removing the LibStub:

For an Addon to keep working, will it be only necessary to change the entries within the *.txt manifest before removing the "Libstub" folder from the addon or will it be necessary to change more..?

Just asking because if only the *.txt manifest needs to be changed I could do it myself without the need to wait for an update from the author ... But if it would take more, then I would need to wait for updates or try to look for new/other addons to replace some older ones ...

Best regards
De-chan
Removing LibStub will require changes to the addon code. In most cases it should be as simple as finding the line where LibStub is called (as explained in the LibStub addon description) and replace it with the global variable provided by that library. If a library hasn't been updated to provide a global variable yet, it means that needs to happen first. After all calls to LibStub have been removed, the LibStub files can be deleted from the addon and all remaining traces removed from the manifest.
Report comment to moderator  
Reply With Quote
Unread 02/24/20, 09:28 AM  
desertforce

Forum posts: 5
File comments: 154
Uploads: 0
Hi... I've got a question...

For removing the LibStub:

For an Addon to keep working, will it be only necessary to change the entries within the *.txt manifest before removing the "Libstub" folder from the addon or will it be necessary to change more..?

Just asking because if only the *.txt manifest needs to be changed I could do it myself without the need to wait for an update from the author ... But if it would take more, then I would need to wait for updates or try to look for new/other addons to replace some older ones ...

Best regards
De-chan
Report comment to moderator  
Reply With Quote
Unread 01/03/20, 03:33 AM  
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1566
File comments: 1111
Uploads: 41
Correct. I have updated the addon description to reflect this.
Report comment to moderator  
Reply With Quote
Unread 01/02/20, 02:07 AM  
votan
 
votan's Avatar
AddOn Author - Click to view AddOns

Forum posts: 577
File comments: 1667
Uploads: 40
Originally Posted by Edorenel
I'm uncertain the workings of add-ons and libraries. So, forgive me for my noob question. *Blushes* But will this add-on update to The Elder Scrolls Online v5.2.11 (or 5.2.5, according to some of the current, most popular add-ons)?
Hi @Edorenel,

there is no need to update the lib. The code did not change for years. We are about to get rid of this lib anyway.
Just alllow older API-Version (called out-dated) addons, by checking the checkbox in the extension menu.
Report comment to moderator  
Reply With Quote
Unread 12/30/19, 05:09 PM  
Edorenel
 
Edorenel's Avatar

Forum posts: 0
File comments: 12
Uploads: 0
I'm uncertain the workings of add-ons and libraries. So, forgive me for my noob question. *Blushes* But will this add-on update to The Elder Scrolls Online v5.2.11 (or 5.2.5, according to some of the current, most popular add-ons)?
Report comment to moderator  
Reply With Quote
Unread 12/04/19, 04:40 PM  
charlie_rowland

Forum posts: 0
File comments: 11
Uploads: 0
LibStub Info

Hello,

I was wondering:

I have downloaded LibStub and copied the folder to my AddOns folder. Is it safe to delete the extra 9 LibStub folders in various other AddOn folders? Won't that speed up my load time?

Thanks!

Just deleted them. Everything seems to be working. Lost 2 seconds on load time, not that great since it still took 90 seconds but it is something.
Last edited by charlie_rowland : 12/04/19 at 06:14 PM.
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: