-
Notifications
You must be signed in to change notification settings - Fork 1
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()
- Updated IMPORT parser to support quoted or unquoted module names
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.