Skip to content

Change Log

Si Dunford edited this page Apr 8, 2022 · 53 revisions

8/4/2022

  • BLITZMAX LEXER
    • Added token TK_DIRECTIVE to support BMX compiler directives: ?[directive]
    • Added token TK_TRANSPILE to support transpiler directives: '#[directive]:

7/4/2022

  • MODULE SCANNER:
    • Skips non .bmk files on import statements
  • PARSER:
    • Demoted "delete" - It is no longer a symbol
    • Fixed Missing module name field data in INCLUDE
    • Fixed missing datatypes TK_OBJECT, TK_SIZE_T
    • Added SYM_TYPETAG
    • Fixed issue in Parse_Function() and Parse_Method() with Data Type Tags Function Xyz$()

BUGS IDENTIFIED:

  • ** Parser cannot deal with compiler directives like this **
  Function _loadCallback:Size_T(buffer:Byte Ptr, buflen:Size_T, data:TStream)
?Not bmxng
  Function _loadCallback:Int(buffer:Byte Ptr, buflen:Int, data:TStream)
?
    Return data.Read(buffer, buflen)
End Function

1/4/22

  • Added joinPaths() to functions.bmx
  • MODULE SCANNER:
    • IMPORT "filename.bmx" Fixed
    • IMPORT mod.modname Fixed
  • PARSER:
    • Added Parse_Private()
    • Added Parse_Public()
    • Added Parse_Extern()
    • Added support for Private/Public in Types and Module body
    • Added support for Extern in Program body, module body etc... ( Fixed bug where EXTERN FUNCTION was parsed as blitzmax function )
    • Added additonal failsafe during parseSequence() and parseArgument()
    • Fixed constant TK_UNINT to TKUINT
    • Fixed constant TK_UNLONG to TKULONG

31/3/22

  • Fixed bug in TASTBinary.inorder()
  • Fixed bug in TASTGroup.inorder()
  • Fixed bug in TASTUnary.inorder()
  • Fixed bug in TAST_if.inorder()
  • Updated TASTWalker:
    • Renamed search() with searchByIDs()
    • Added searchByID()
    • Renamed Walker() to WalkByIDs()
  • Added TModuleCache.addModules()
    • Improved module insert to database speed
    • SQL adds multiple values instead of one-at-a-time
  • Fixed missing filename in IMPORT node
    • Updated IMPORT parser to support quoted or unquoted module names
      • Update TAST_Import fields
      • Update Parse_Import()

30/3/22

  • Hover Provider - Markdown is working for Workspace symbols.
  • Added include, import and module to TSymbolTable filter
    • Added symtable_MODULE() to TSymbolTable.bmx
  • Fixed bug where Module Scanner did not extract symbols
  • Added todo and completed lists to TTaskModuleScan
    • Populated todo list instead of parsing
    • Parse To-do list once scanning is complete
    • Add to completed when file parsed
  • Created Parser/TASTWalker for easy AST searches.
    • Fixed bug in TASTCompound.inorder()
  • Module AST search for Import and Include working
    • BUG: Node name is missing in "include" and "import" nodes.

28/1/22

  • Added TLexer.find() into module bmx.lexer
    • Users MUST update to TLexer version 2.1
  • Basic Signature string working for workspace
  • BUG: Module symbol lookup returns null!

27/1/22

  • Bug fixing...
  • Added signature for Function and Method into tables during symbol scan
  • Enabled Experimental Signature Help Capability -x:sighelp
  • Added outline handler for textDocument/signatureHelp

26/1/22

  • Bug fixing...

25/1/22

  • Fixed bug in signature creation with methods containing tokens ("new" for example)
  • version.bmk changed so that we have appvermax, appvermin and appbuild (instead of version and build)
  • Removed global BLS_VERSION
  • TCacheDB update() is now based on BLS version/build, not table version
    • TWorkspaceCache.bmx updated to support this change
    • TModuleCache.bmx updated to support this change
  • TCacheDB now includes patch() method for updating between build numbers
  • Added field "definition VARCHAR(255)" to table from V0.4 build 34
  • Added field "description VARCHAR(255)" to table from V0.4 build 34

22/1/22

  • Finished signature for FUNCTION
  • TAST_Method.def renamed to .arguments
  • Finished signature for METHOD

21/1/22

  • TAST_Function.def renamed to .arguments
  • Fixed bug parsing function arguments containing function variables

20/1/22

  • Added TSignatureTableRow
  • Added signature visitor call for FUNCTION
  • Created basic signature definition for FUNCTION from AST

18/1/22

  • Added signatures:Tlist to TSymbolTable
  • Added signatures:Tlist to TSymbolTableVistor
  • symbols and signatures passed from TSymbolTable to TSymbolTableVistor.run()

17/1/22

  • Fixed Hover position so it gets the correct token!

11/1/22

  • Fixed URI in cache instead of path
  • Moved module scanner from test into BLS
  • Enabled hover capability (with Experimental flag -x:hover)
  • Added TLanguageServer.on_textDocument_hover()
  • Removed old handler files
  • Created bls_textDocument_hover.bmx
  • Included bls_textDocument_hover.bmx
  • Split TWorkspaceCache.getSymbols
    • Created _getSymbols()
    • Created getSymbols( string )
    • Created getSymbolsAt( position )
  • Added SymbolKindText:string[]

9/1/22

  • Fixed bug in TTaskModuleScan

8/1/22

  • Created new private project board in Github projects beta
  • Updated .gitignore (message.samples/)
  • Updated README.md
  • Increased version to V0.4

7/1/22

  • Added field TSymbolTable.filepath to hold module file
  • Added field TSymbolTable.filepath to hold module file
  • Updated TCacheDB with initialise() method
  • Fixed bug in TCacheDB that might prevent DB from self-upgrading
  • BLS_VERSION added as global
  • Insert BLS_VERSION into cache files so updates can be BLS version specific in future
  • Saved modules and module symbols into module cache
    • Not currently processing IMPORT & INCLUDE

6/1/22

  • Crash-Bug investigation
    • Tested it was stable
    • Disabled GC Counting
    • Re-enabled new features + functionality
  • Fixed bug in TTaskModuleScan.launch()
  • Added TModuleCache.getModules()

5/1/22

  • Crash-Bug investigation
    • Disabled several new features and functionality to identify source of crashes
    • Enabled GC Counting
    • Tracked down bug in BlitzMax Parser

4/1/22

  • Fixed "name" in TaskSend
  • Sendbuffer updated from String[] to TTask[]
  • Fixed client response type to RESPONSE (Not REQUEST)
  • 🐞 Instability in Dev version causes memory leak and system crash!

3/1/22

  • Fixed bug in TBlitzMaxParser.parseSequence()
    • This prevented single-line IF from returning at EOL.
  • Fixed IF condition statement bug
  • Fixed IF expression bug
  • Added TAST_Return node
  • Implemented RETURN

2/1/22

  • Added arguments -x:compl, -x:def, -x:hover, -x:sighelp, -o:desc
  • Updated TBlitzMaxParser
    • Added TK_IF to SYM_BLOCK_KEYWORDS
    • Added SYM_IF_BODY
    • Added TK_RETURN to SYM_FUNCTION_BODY
    • Added TK_RETURN to SYM_METHOD_BODY
    • Added support for TK_IF and TK_Return to parsesequence()
    • Added Parse_If() and Parse_Return()
    • Added ParseComparison()
    • Added ParseEquality()
    • Fixed ParseFactor(),ParseTerm() which were the wrong way around
    • Added ParsePrimary()
    • Added ParseUnary()
    • ParseExpression() is same as ParseEquality(), called that to reduce code
    • ParseCondition() is same as ParseEquality(), called that to reduce code
    • Fixed error in ParseTerm()
  • Updated type TAST_IfThen from TASTNode to TASTCompound
    • Added otherwise field to support Else
  • Created TASTUnary - (Instead of using binary with a single leg)
  • Created TASTGroup - (Instead of using compound which didn't work well)
  • Constant TK_GR_OR_EQUAL renamed to TK_GT_OR_EQUAL

30/12/21

  • Created TCacheDB from TWorkspaceCache
  • TWorkspaceCache extends TCacheDB
  • Created TModuleCache extends TCacheDB
  • Added handler to bls for modules
  • Added threaded task to scan modules on launch

29/12/21

  • Moved function in() from bls.bmx to functions.bmx
  • Created TTaskModuleScan.bmx

21/12/21

  • Fixed several bugs
  • PUSHED V0.3, build 263
  • Created TTaskSend to replace direct message sending
    • Removed TClient.sendMessage()
    • Updated all calls to TClient.SendMessage
  • PUSHED V0.3, build 271
  • Created TServerRequest Extends TMessage
  • Requests buffer updated to use TServerRequest
  • Updated TLanguageServer.matchResponseToRequest()
  • Removed "result" argument from Server Requests
  • Updated arguments on message handlers (Removed notused:object)
  • TTaskReceiver now looks up server request and appends response
    • Previously it sent request and response as different arguments
  • Deleted depreciated files:
    • TLSP_StdIO.bmx
    • TLSP_TCP.bmx
    • TMessageQueue.bmx
  • PUSHED V0.3, build 284
  • Fixed message timeout bug
  • PUSHED V0.3, build 290
  • Fixed TServerRequest bad reply.
  • PUSHED V0.3, build 292

15/11/21

  • Created TTaskReceiver to replace TLanguageServer.ReceiverThread()
  • Fixed bug in TArguments
  • Added TClient_StdIO Extends TClient
  • Added TClient_TCP Extends TClient
  • TClient now extends TEventHandler (instead of TMessageQueue)
  • Commented out abstract TLanguageServer.run()
  • Commented out abstract TLanguageServer.getRequest()
  • TMessageQueue is redundant - Removed
  • TLSP_StdIO is redundant - Removed
  • TLSP_TCP is redundant - Removed
  • Depreciated TTask.execute()
  • Depreciated TTask.post() [Zero argument method]
  • Depreciated TLanguageServer.ReceiverThread()
  • Depreciated TLanguageServer.SenderThread()
  • Fixed bug in TTaskReceiver

14/11/21

  • Fixed bug in TTaskDocumentParse.launch()

12/11/21

  • Updated TTask to support blocking or threaded tasks.
  • Added new TTaskQueue type
  • Added TTaskWorkspaceScan.launch()
  • Added TTaskDocumentParse.launch()

10/12/21

  • Added constants to TMessage
  • Added TMessage.classify() and TMessage.className()
  • Updated TMessage to use class:int instead of request:int
  • Updated TLanguageServer.ReceiverThread() to use message class
  • Updated TEventHandler.distribute() to use message class
  • Updated event handlers with second argument to be used for request
  • Added TLanguageServer.matchResponseToRequest()
  • Updated TLanguageServer.send() to classify REQUEST/RESPONSE/NOTIFICATION
  • Configured TMessage expiration of 5 minutes for Request/Responses.
  • Enabled TLanguageServer.on_workspace_configuration()

9/12/21

  • Added EmptyRequest() to responses.bmx
  • Fixed issue in TWorkspace.getConfiguration() where ID was not added to workspace/configuration request

6/12/21

  • Added search(), is() support to bmx.json to help with client capability detection
  • Fixed bug in TArguments that crashes bls if valid argument table (JSON) is invalid
  • Added experimental argument -x:wsym
  • Enabled Workspace Symbol Provider
  • ** Not receiving workspace symbol messages from client**
  • Pushed to github

3/12/21

  • Added new() and reveal() to TLocation
  • Added TLanguageServer.on_workspace_symbol() handler
  • Merged TSymbolTable and TSymbolTable visitor into BLS

2/12/21

  • Moved TGift out into its own file.
  • TVisitor
    • Replaced visit() method
    • Replaced visitChildren() method
  • TBlitzMaxParser
    • Added support for TK_Const that was missing!
    • Fixed VarDef issue affecting Const, Local, Field and Global

30/11/21

  • Moved Type TURI into file of its own
  • Fixed bug in TURI
  • Resolved issue in TWorkspace.open()
  • Moved genWorkDoneToken() into TClient
  • Created TClient.progress_register()
  • Created TClient.progress_begin()
  • Created TClient.progress_end()
  • Created TClient.progress_update()

29/11/21

  • Revised TWorkspace.add()
  • Added TWorkspace.exists()
  • Workspace Cache is maintaining documents
  • Change version to 0.3 as this is a milestone

26/11/21

  • Included bah.database and bah.sqlite
  • Created and Included TWorkspaceCache
  • Created and Included TDBDocument
  • Attached cache controller to workspace
  • Added TTextDocument.loadFile()

23/11/21

  • Included Crypto.MD5Digest
  • Added TTextDocument.computeChecksum()

22/11/21

  • Renamed TWorkspaceScanTask to TTaskWorkspaceScan
  • Renamed TDiagnosticTask to TTaskDiagnostic
  • Included TTaskDocumentParse.bmx
  • Created TTaskDocumentParse
    • Moved TTextDocument.validate() into TTaskDocumentParse
  • Attached TWorkspaceScanTask to didOpen event
  • Split TWorkspaces and TWorkspace into own files
  • Flattened TFullTextDocument into TTextDocument
  • Updated unique comparison in TMEssageQueue.pushTaskQueue()

21/11/21

  • Added TTask.post() which calls client.pushTaskQueue()
  • Added TTextDocument.isOpen:int to identify if a document is open in the client or not
  • added TTextDocument.new( uri ) to create a non-open document stub
  • Removed optional parameters from TTextDocument.new( uri, content, version )
  • included TWorkspaceScanTask.bmx
    • Scans the workspace adding all documents

20/11/21

  • Created Worklog and Change log pages on Wiki
  • Commented out Temporary Test Progress bar in initialised method
  • Language Server Protocol ENUM "MessageType" renamed "EMessageType"
  • Workspace creates workspace cache folder (.bls-cache)
  • Published To Github
  • Changed TTask.execute() to abstract
  • Fixed bug in TClient.popTaskQueue() that returned an Empty TTask instead of null when queue is empty!
  • Fixed bug where notifications were being executed on arrival instead of added to the task queue. This prevented the prioritisation of events.
Clone this wiki locally