Performance issues with large codebases

I'm facing massive performance issues with a project that I'm working on which contains a lot of files. In this codebase completion is nearly unusable, causes lots of Lua & out of memory errors & crashes the native LSP.
One of the very common errors I get is this
Error executing luv callback:
...ovim/HEAD-7ba28b1/share/nvim/runtime/lua/vim/lsp/rpc.lua:558: cannot resume dead coroutine
Press ENTER or type command to continue

To make sure this was not the native LSP itself, I did the following:

Removed all the plugins
Installed all of them including nvim-lspconfig but without completion-nvim
Tested (with omni-completion setlocal omnifunc=v:lua.vim.lsp.omnifunc) -> everything ran very smoothly & fast
Installed completion-nvim
Tested -> performance issues all over the place (editor is locked, completion takes a lot of time, etc…)

I tried to see if coc.nvim has the same issues or no & I tried that & it worked fine too.
This is my completion.nvim config & this is my LSP config
Note, the same exact LSP config works fine without completion.nvim which also means that the TypeScript LSP is not the culprit too.

That's sad to hear. In fact, I'm also facing the same issue with large c++ file with clangd as the lsp. Not quite sure why the file size will cause the performance drag though but I'll look into that. Right now the temporary solution is using :CompletionToggle to toggle on and off completion when facing giant file size(shouldn't be often).

I found a bit of bad behavior.
For example, a typical completion plugin sends one request in | -> console| case but the completion-nvim send 7 requests for c o n s o l e.
But this behavior is right if the server returns isIncomplete=true on the first response.

But a right behaviour doesn't always mean a good experience, maybe it should debounce & batch these requests instead of sending letter by letter

@ahmedelgabri Can you provide the project you mentioned? I've done a little test on my side but my issue seems to be on the clangd side.. Otherwise I would have to push a testing branch and you might need to help me test about that.

@ahmedelgabri Can you provide the project you mentioned? I've done a little test on my side but my issue seems to be on the clangd side.. Otherwise I would have to push a testing branch and you might need to help me test about that.

Unfortunately I can't do that. I'm fine with testing though

Actually @mg979 have been working on a fork of completion-nvim (link). In which the redundant timers was refactored out and he solve some other issue as well. @ahmedelgabri can you take some time to test if it works for you? If so we just need to start porting things back to completion-nvim, if not we'll need to spend some more time to clarify what went wrong...
Note that the setting is not compatible with completion-nvim (make it easier to test), you might have to spend some time reading the docs. Some setting @mg979 suggest is
let g:autocomplete = {'confirm_key': "\<C-Y>"}
let g:autocomplete.chains = {
       \ 'vim': ['snippet', 'keyn', 'file', 'cmd'],
       \ 'cmake': {'String': ['keyn'], 'default': ['file', 'omni', 'keyn']},
       \}

I have tried the fork the good thing that it at least let me type & doesn't block my editor also snippets are shown right away
But it's still very slow & sometimes doesn't show completion at all, here are a couple of gifs on how it works in a typescript.tsx file where I do have react imported at the top of the file (this is a real file from that repo I talked about but I can't show details sorry)
I intentionally was typing slowly to see how slow it is, but usually I'll type faster than that.
Here is the config that I used, which is also shown on the left side of each gif
This file was added to ~/.config/nvim/after/plugin/autocomplete.vim
autocmd BufEnter * call autocomplete#attach()

let g:autocomplete = get(g:, 'autocomplete', {})
let g:autocomplete.snippets = 'vim-vsnip'
let g:autocomplete.chains = {
      \ 'typescript' : [ 'path', ['lsp', 'snippet'], 'keyn' ],
      \ 'typescript.tsx' : [ 'path', ['lsp', 'snippet'], 'keyn' ],
      \}

imap            <Tab>   <Plug>(TabComplete)
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"

imap <localleader>j <Plug>(NextSource)
imap <localleader>k <Plug>(PrevSource)

set completeopt=menuone,noselect
set shortmess+=c

With the default g:autocomplete.chains:

With a custom g:autocomplete.chains for typescript

@ahmedelgabri Thanks a lot for the report! I think not having editor stuck is a good new. We'll start porting some key changes back to completion-nvim and see how it goes. I think we should aim for optimizing the completion speed after the lock is disappear.

I will keep it running until the end of the week to get a better understanding & maybe report more issues if it happens

Thanks a lot. Also some changes in the fork are on the improvement of signature help and hover. Can you try using completion-nvim again with hover and signature help off and see if it still sucks? That way I'll have a better understanding on what went wrong. Sorry for keep bothering you:(

No worries, happy to help 😊
I was already testing completion-nvim now again because I think I found another issue (but this is with my setup) which is vim-gitgutter, it slowed down vim a lot! So after removing it completion-nvim because more responsive, a bit slow still & still get the cannot resume dead coroutine errors but much usable.
So that was interesting… I will most probably get rid of vim-gitgutter since it has way less value for me than LSP & completion.

Hi, The typescript-language-server does not support isIncomplete in my knowledge.
But completion-nvim sends a request on each char.
I bisected for the reason.
Then I found the e4dddd8e29224c667972fc33a2537a2e7e1e1a4c .
@ahmedelgabri Could you test with 49a2335d2f9e2c15bf597cde555ecad3bdf70663 ?

@ahmedelgabri Could you test with 49a2335 ?

I tested that, but there was no major difference.
BTW, I can confirm that disabling vim-gitgutter or at least disabling realtime updates improved the performance greatly, I have been disabling it for a couple of days already.
Still completion.nvim is not as fast as coc.nvim but much better than before.

Ahh okay so I think that's because vim-gitgutter might also do some timers and async stuff (so does completion-nvim), causing the event loop to stuck with each other therefore slow down neovim a lot. coc-nvim use remote API so it's still usable in this case.
Nevertheless, refactored should be done. I'll start working on it whenever I have time. @ahmedelgabri I'll keep you update about the progress.
@hrsh7th About the isIncomplete flag, I think that's worth discussing in another issue. We shouldn't send request on each char if the server doesn't support isIncomplete.

@ahmedelgabri,
Can you temporarily switch to the LSC plugin? It is a VimScript LSP plugin. Note, it works fine in Neovim, it is not restricted to Vim 8.
This article of mine may help you get setup: https://bluz71.github.io/2019/10/16/lsp-in-vim-with-the-lsc-plugin.html
LSC apparently uses a 500ms denounce along with no support for isIncomplete.
I am keen to know if there is a difference in performance between Neovim LSP + completion.nvim and LSC. Maybe there is, maybe there isn’t, maybe LSC will be worse. But it will be a data point that could help use understand this issue.
I have opened #231 with regard to denouncing, but that is purely speculative.
Best regards.

@bluz71 I couldn't get the completion to work at all, I used your config, I tried to set g:lsc_auto_map to v:true & {'defaults': v:true, 'Completion': 'omnifunc'} nothing worked. Checking with set omnifunc? it's always empty. And I don't change that anywhere other than the neovim LSP config which I disabled to test LSC.
But I see that you are using gitgutter I was using this too & after removing it literally everything in my vim improved, typing became more responsive & completion perf improved too. I'd say start there first.

Author of vim-lsp and asyncomplete.vim here.
debouncing is not enough. There are other smarter ways to fix perf which asyncomplete.vim and ncm uses which is similar to VSCode. I documented my findings of how vscode is performant at https://github.com/roxma/nvim-completion-manager/issues/30#issuecomment-283281158. You could do the same trick for completion-nvim. you might want to read the thread from start to get the best context.

@bluz71 I couldn't get the completion to work at all, I used your config, I tried to set g:lsc_auto_map to v:true & {'defaults': v:true, 'Completion': 'omnifunc'} nothing worked. Checking with set omnifunc? it's always empty. And I don't change that anywhere other than the neovim LSP config which I disabled to test LSC.

That is likely an issue with respect the server command not working or not being correct. Which programming language are you using and which language server?
If you have time I am very interested in helping you get LSC working. Note, that is not because I want you to switch LSP clients to LSC, but rather I want the data point of how LSC performance compares with completion.nvim for you. Maybe we can improve the performance of this plugin?
Can you post your LSC config here thanks. My first instinct is that you may need to fully qualify the language server binary and possibly add a --lsp or --stdio type flag. I believe it should be an easy fix.
In my case I have Dart/JavaScript and Ruby LSP setups for both LSC and Neovim LSP + completion, here and here.

But I see that you are using gitgutter I was using this too & after removing it literally everything in my vim improved, typing became more responsive & completion perf improved too. I'd say start there first.

My assertion in #231 is that I notice completion.nvim uses more CPU than LSC. Hence in your case removing gitgutter helps but it may still be the case the completion.nvim (or the language server it communicates with) may be using more CPU than ideally it should (when compared with LSC). A theory that is to be determined.
As for gitgutter, I notice no issue unless I am dealing with files 200K and greater. I also configure gitgutter to use Ripgrep:
let g:gitgutter_grep = 'rg'

function! signs#Disable() abort
    :GitGutterBufferDisable
    :ALEDisableBuffer
endfunction

    autocmd BufReadPre *
      \ if getfsize(expand('%')) > 200000|
      \     call signs#Disable()|
      \ endif

Anyway, your code base and test case should be really helpful to ascertain if there are inefficiencies in completion.nvim.
Best regards.

Author of vim-lsp and asyncomplete.vim here.
debouncing is not enough. There are other smarter ways to fix perf which asyncomplete.vim and ncm uses which is similar to VSCode. I documented my findings of how vscode is performant at roxma/nvim-completion-manager#30 (comment). You could do the same trick for completion-nvim. you might want to read the thread from start to get the best context.

Hello again @prabirshrestha.
If completion.nvim is sending to the server every character the uses types (which is may not be doing, I am just speculating) then a debounce of 500ms surely could be of some help (LSC uses a 500ms is not worse for that). It may not be the silver bullet.
I do agree that the tips you provide in the linked post are also highlighly worthwhile, maybe even more so than debouncing.
I will copy your post over to #231 since that is the debounce issue.
This one, which may strongly relate, should focus on @ahmedelgabri's original performance issue. If we can get LSC working for him that would provide an interesting comparison. What will be the result? I have learnt with LSP anything is possible, LSC could be faster, or slower or the same.
Cheers.

That is likely an issue with respect the server command not working or not being correct. Which programming language are you using and which language server?
[…]
Can you post your LSC config here thanks. My first instinct is that you may need to fully qualify the language server binary and possibly add a --lsp or --stdio type flag. I believe it should be an easy fix.
[…]
In my case I have Dart/JavaScript and Ruby LSP setups for both LSC and Neovim LSP + completion, here and here.

That's highlight unlikely because the same server works fine when I switch back to neovim LSP, I already added --stdio, I was testing with typescript LS which is used like this typescript-language-server --stdio & that's what I had in LSC config & it's already in my $PATH
This was the setup I tested LSC with.
let g:lsc_enable_autocomplete = v:true
let g:lsc_auto_map = v:true
let g:lsc_server_commands = {'typescript': 'typescript-language-server --stdio', 'typescript.tsx': 'typescript-language-server --stdio'}

If you have time I am very interested in helping you get LSC working. Note, that is not because I want you to switch LSP clients to LSC, but rather I want the data point of how LSC performance compares with completion.nvim for you. Maybe we can improve the performance of this plugin?

I understand that 🙂

But I see that you are using gitgutter I was using this too & after removing it literally everything in my vim improved, typing became more responsive & completion perf improved too. I'd say start there first.

My assertion in #231 is that I notice completion.nvim uses more CPU than LSC. Hence in your case removing gitgutter helps but it may still be the case the completion.nvim (or the language server it communicates with) may be using more CPU than ideally it should (when compared with LSC). A theory that is to be determined.
As for gitgutter, I notice no issue unless I am dealing with files 200K and greater. I also configure gitgutter to use Ripgrep:
let g:gitgutter_grep = 'rg'

function! signs#Disable() abort
    :GitGutterBufferDisable
    :ALEDisableBuffer
endfunction

    autocmd BufReadPre *
      \ if getfsize(expand('%')) > 200000|
      \     call signs#Disable()|
      \ endif

Thanks will check that, but in my case it was not about filesize because the files I tested on in that repo were not that large yet, it choked really bad. I also had rg as gitgutter grep but that disable tip based on filesize is a nice one. I will use this anyway for other stuff maybe, thanks for the tip.

Try this instead:
let g:lsc_server_commands = {
 \ 'typescript': { 'command': 'typescript-language-server --stdio' },
 \ 'typescript.tsx': { 'command': 'typescript-language-server --stdio' }
 \ }

The space between typescript-language-server and --stdio may require the use of the command directive. I always use command as noted here.
I myself use typescript-language-server with JavaScript and TypeScript code.
Also, LSC automap, from my reading, does not setup omnifunc. I recommend defining your own mappings, these are mine:
let g:lsc_auto_map = {
 \  'GoToDefinition': 'gd',
 \  'FindReferences': 'gr',
 \  'Rename': 'gR',
 \  'ShowHover': 'K',
 \  'FindCodeActions': 'ga',
 \  'Completion': 'omnifunc',
 \}

Best regards.

Ok, I have tested LSC again & it's indeed slightly more responsive than completion-nvim, I can keep typing without any locks or hangs.
I understand that the completion list is affected by the LSP server itself & in this case, I'm not sure anything can be done here because the project is huge & typescript-language-server is slow.
This is the configuration I used, thanks @bluz71 for the help.
let g:lsc_server_commands = {
 \ 'javascript': { 'command': 'typescript-language-server --stdio' },
 \ 'javascript.jsx': { 'command': 'typescript-language-server --stdio' },
 \ 'typescript': { 'command': 'typescript-language-server --stdio' },
 \ 'typescript.tsx': { 'command': 'typescript-language-server --stdio' }
 \ }
let g:lsc_auto_map = {
 \  'GoToDefinition': 'gd',
 \  'FindReferences': 'gr',
 \  'Rename': 'gR',
 \  'ShowHover': 'K',
 \  'FindCodeActions': 'ga',
 \  'Completion': 'omnifunc',
 \}

I also noticed that the cannot resume dead coroutine error in completion-nvim usually happens when I'm trying to complete JSX but not normal JavaScript/TypeScript code
React. // this rarely shows this error
<ComponentName // this usually shows the error

LSC should be slower since it is VimScript, which is orders of magnitude slower than LuaJIT.
That it is more responsive means there are likely inefficiencies in completion.nvim.
Thanks for testing.

Ok, I think I found another potential-performance-killing item with upstream Neovim LSP when compared with LSC.
Whilst in insert mode, as changes are being made, LSC sends minimal byte range style didChange events to the language server, for example:
{
  "method": "textDocument/didChange",
  "jsonrpc": "2.0",
  "params": {
    "contentChanges": [
      {
        "range": {
          "end": { "character": 2, "line": 8 },
          "start": { "character": 2, "line": 8 }
        },
        "text": "  @\n  ",
        "rangeLength": 0
      }
    ],
    "textDocument": { "uri": "file:///tmp/foo/foobar.rb", "version": 2 }
  }
}

Neovim LSP, from my testing, is always sending the complete file contents after every change, for example:
{
  "method": "textDocument/didChange",
  "jsonrpc": "2.0",
  "params": {
    "contentChanges": [
      {
        "text": "class FooBar\n  def initialize\n    @abc = \"abc\"\n    @hello = \"hello\"\n    @help = \"help\"\n  end\n\n  def baz\n    @\n  end\nend\n\nfoo = Foobar.new\n"
      }
    ],
    "textDocument": { "uri": "file:///tmp/foo/foobar.rb", "version": 6 }
  }
}

How will the language server know what's changed via Neovim LSP didChange? A de-difference server side?
I just tested a 3,000 line JavaScript file and Neovim LSP is sending the full 3,000 lines after every keypress in insert mode (or maybe until CursorHold?).
This seems highly inefficient to me.
LSC on the other hand is sending very small range diffs, here is a example of the packets sent whilst I was appending [1, 2, 3] into a huge JavaScript file:
{
  "method": "textDocument/didChange",
  "jsonrpc": "2.0",
  "params": {
    "contentChanges": [
      {
        "range": {
          "end": { "character": 6, "line": 419 },
          "start": { "character": 6, "line": 419 }
        },
        "text": "\n      ",
        "rangeLength": 0
      }
    ],
    "textDocument": {
      "uri": "file:///home/dennis/projects/platters_app/src/components/react.development.js",
      "version": 2
    }
  }
}

{
  "method": "textDocument/didChange",
  "jsonrpc": "2.0",
  "params": {
    "contentChanges": [
      {
        "range": {
          "end": { "character": 6, "line": 419 },
          "start": { "character": 6, "line": 419 }
        },
        "text": "[]",
        "rangeLength": 0
      }
    ],
    "textDocument": {
      "uri": "file:///home/dennis/projects/platters_app/src/components/react.development.js",
      "version": 3
    }
  }
}

{
  "method": "textDocument/didChange",
  "jsonrpc": "2.0",
  "params": {
    "contentChanges": [
      {
        "range": {
          "end": { "character": 7, "line": 419 },
          "start": { "character": 7, "line": 419 }
        },
        "text": "1, 2, 3",
        "rangeLength": 0
      }
    ],
    "textDocument": {
      "uri": "file:///home/dennis/projects/platters_app/src/components/react.development.js",
      "version": 4
    }
  }
}

Not being an LSP expert, but Neovim LSP sending the complete file buffer for every insertion change via didChange seems like it could be very bad for language server performance?

It seems neovim's LSP implementation problem.
You can create the issue.

I thought neovim built-in lsp supported it, but it seems to be my misunderstanding.
https://github.com/neovim/neovim/blob/master/runtime/lua/vim/lsp.lua#L813

@hrsh7th,
I logged Ruby and JavaScript language servers and with small or huge files, Neovim is always sending the full buffer payload.
And it happens pretty frequently whilst a user is typing in new content. If one types slow enough it is after every key press.
The original poster of this issue is dealing with a big repo and maybe even big files, so the current didChange behaviour could well be a factor.
Note, I still think other strategies such as debouncing are still worth exploring in completion.nvim.
Best regards.

Very sorry for the late replied(again).
@bluz71 If debouncing means a timers intervals of checking changed event, completion-nvim already have that and it's in fact a configurable variable g:completion_timer_cycle, the default value is 80 though which is much lower than it's in LSC. The isIncomplete issue should be fixed though and I'll be working on it.
@prabirshrestha Thanks a lot for the information. completion-nvim is highly inspired by asyncomplete.vim, so thanks for your work on that:)

@hrsh7th May I ask you how do you find out the server is not supporting isIncomplete? For sumneko_lua it just keep sending isIncomplete=True and it's quite annoying.

If I want to know whatever the servers support it, I investigate lsp-client's logs.
has isIncomplete support

gopls
sumneko_lua
vim-language-server
intelephense

has no isIncomplete support

typescript-language-server
html-language-server
css-language-server

@bluz71 If debouncing means a timers intervals of checking changed event, completion-nvim already have that and it's in fact a configurable variable g:completion_timer_cycle, the default value is 80 though which is much lower than it's in LSC. The isIncomplete issue should be fixed though and I'll be working on it.

Debouncing means buffering up textDocument/didChange events and sending only one request to the language server after a certain period of inactivity (say 200-500ms) rather than after every keypress.
In the case of Neovim LSP + completion.nvim I setup g:completion_timer_cycle to 2 seconds and monitored communication to and from the Ruby Solargraph language server.
Every single key press in insert mode instantly triggers a textDocument/didChange request. And Neovim LSP currently sends the entire buffer document currently which is highly inefficient. This issue has been opened at Neovim about that.
Currently completion.nvim does not debounce whilst a user is typing content.
Is that a big deal? Currently yes because Neovim LSP is sending full buffer. If it sent incremental didChange maybe it would not be a big deal. @prabirshrestha is not convinced debouncing helps that much.  However LSC does have 500ms debounce and it seems pretty good.

Okay I understand. This doesn't seems like an issue in completion-nvim though, because the textDocument/didChange is not handle here. The way completion-nvim handle completion is by using a timers to monitor b:changedticked, and the timer cycle is control by g:completion_timer_cycle. It can be changed to something smarter though, like using nvim_buf_attach to trigger callbacks with changedticked event.

Hello @haorenW1025,
Indeed, I am now learning that textDocument/didChange is being triggered by upstream Neovim LSP. This is being discussed in Neovim didChange issue 13049. Currently the full buffer is sent on every insert mode keypress and an interim patch to add incremental textDocument/didChange exposed quadratic requests per keypress being sent to the language server (not wanted at all).
So it is hard at the moment for me to recommend any changes to completion.nvim to improve performance, at least not until upstream Neovim didChange behaviour is optimised.
For now, whilst waiting for upstream to fix the Neovim 13049 issue, completion.nvim should concentrate on improving isIncomplete? behaviour as well as:

The way completion-nvim handle completion is by using a timers to monitor b:changedticked, and the timer cycle is control by g:completion_timer_cycle. It can be changed to something smarter though, like using nvim_buf_attach to trigger callbacks with changedticked event.

Best regards.

I've tried to fix the redundant complete request with isIncomplete in #249. Next step is reworking completion by using nvim_buf_attach which will reduce extra timers overhead.

Hi,
If that can be of any help.
Also using completion-nvim in a quite large codebase (+10K files indexed w/ ccls)
Out of the box completion was almost unusable due to the massive amount of symbols triggered on the first key.
Increasing completion_trigger_keyword_length to 3, improved things big a great deal.
Now, that's the first time I have a fully working LSP for this project.
Thanks !

@sl8vz Thanks for the feedback, that's actually really interesting. So the slow respond issue may be related to the lsp giving back too many items and completion-nvim is having a hard time processing them.. Maybe some optimization on string processing or limited the items from lsp may help if that's the case.

 This might not reveal the higher level issue, but such as the complex sorting from @haorenW1025 his last comment it would detect.

I actually also think it would really benefit a lot to add some debounce on user input, it makes (to me) no sense to trigger the completion every time I press a key while I'm typing a full word, for example, I want to write 'feedback', it's trying to show me completion for each letter and it's noticeably lagging and freezing while writing.

I actually also think it would really benefit a lot to add some debounce on user input, it makes (to me) no sense to trigger the completion every time I press a key while I'm typing a full word, for example, I want to write 'feedback', it's trying to show me completion for each letter and it's noticeably lagging and freezing while writing.

Issue #231 (closed in favour of this) requested a debounce like the LSC plugin (which uses 500ms completion debouncing, along with incremental textDocument/didChange requests).
LSC feels more responsive to me than Neovim LSP + completion.nvim even though it is written in Vimscript whilst the latter are LuaJIT (which is thousands of times faster than Vimscript).
I also feel debouncing should be used.
This comment by @prabirshrestha is also worth exploring.

Issue #231 (closed in favour of this) requested a debounce like the LSC plugin (which uses 500ms completion debouncing, along with incremental textDocument/didChange requests).
LSC feels more responsive to me than Neovim LSP + completion.nvim even though it is written in Vimscript whilst the latter are LuaJIT (which is thousands of times faster than Vimscript).
I also feel debouncing should be used.
This comment by @prabirshrestha is also worth exploring.

I just tested out the nvim-compe completion plugin and in my quick testing it feels smoother and more responsive than completion-nvim. The plugin supports Neovim's LSP.
I only found out about nvim-compe a day or so ago. It is by the same developer of vim-vsnip (which has been my preferred snippet plugin for a while now).
I am switching over.

I just tested out the nvim-compe completion plugin and in my quick testing it feels smoother and more responsive than completion-nvim. The plugin supports Neovim's LSP.
I only found out about nvim-compe a day or so ago. It is by the same developer of vim-vsnip (which has been my preferred snippet plugin for a while now).
I am switching over.

I think that this plugin (completion-nvim) is indeed future as it will probably be in nvim core, but for now, it still need improves, I am also switching as nvim-compe feels smoother but I will be back asap this is improved.

I think that this plugin (completion-nvim) is indeed future as it will probably be in nvim core, but for now, it still need improves, I am also switching as nvim-compe feels smoother but I will be back asap this is improved.

I think that this plugin (completion-nvim) is indeed future as it will probably be in nvim core [...]

I don't think that's true. Neovim core already provides completion via omnifunc=v:lua.vim.lsp.omnifunc. As far as I know there are no plans for as-you-type-completion (a.k.a auto-completion).

I think that this plugin (completion-nvim) is indeed future as it will probably be in nvim core [...]

I don't think that's true. Neovim core already provides completion via omnifunc=v:lua.vim.lsp.omnifunc. As far as I know there are no plans for as-you-type-completion (a.k.a auto-completion).

I just tested out the nvim-compe completion plugin and in my quick testing it feels smoother and more responsive than completion-nvim. The plugin supports Neovim's LSP.

@bluz71 thanks for this! I just tested it & it's a massive difference. Instant switch.

I just tested out the nvim-compe completion plugin and in my quick testing it feels smoother and more responsive than completion-nvim. The plugin supports Neovim's LSP.

@bluz71 thanks for this! I just tested it & it's a massive difference. Instant switch.

I think that this plugin (completion-nvim) is indeed future as it will probably be in nvim core, ...

@lucax88x just because I'm curious: why do you think so? :thinking:

I think that this plugin (completion-nvim) is indeed future as it will probably be in nvim core, ...

@lucax88x just because I'm curious: why do you think so? :thinking:

@weilbith  Probably because of my ignorance, but I saw it's under nvim-lua and I just did 1+1..

@weilbith  Probably because of my ignorance, but I saw it's under nvim-lua and I just did 1+1..


PROJECT LIBRARY MANAGEMENT SYSTEM VER 2.74 [bugs fixed]

Link to the Project File :

Project_Library_v2.74.zip

Project Description :

(+ P.S: FOR THE MAIN LIBRARY, FEATURES ARE INDICATED ONE BY ONE USING THEIR WIDGET-GROUP NUMBER ON LEFT AS PER THEIR EXPLANATION)
*** The Very first step in which the database itself is created, is initiated in the MAINFILE__Book_Library.py
*** and that's where we create all the foundations and the infrastructure we need to build a true library
*** although it now exists in its pure simplistic form, we have established ideas that hence enabled us
*** to incorporate useful features into an all-in-one structure that works as intended as you immerse yourself
*** in it by just a hands-on experience with its GUI. We're proud of our first-ever work since it's easy for
*** everyone to get the hang of with just giving the tools the first go.
*** But despite this all, please also note that when you're going to borrow a book, you need to have its
*** ID. and in order to do that, you need to retrieve it from the database that's also fulfilled with just
*** typing down the book's title in the appropriate field and a single left-click on the button to submit
*** your request and get the specific book ID.
*** One other notable thing to add, is that you can update the added books by just inputting their exact name
*** and update the rest of their details simply by entering new data in their appropriate fields.
1 *** All in All, to put it short, the first 4 entries add a book to the database. one of which with the name
1 *** "Number of Instances" implies to the number of copies of the same book currently available. and ID is also
1 *** automatically generated for each book.
2 *** Next part is to singup a User by their Username and Password. Books can be updated So do Users by a new
2 *** password and the same Username.
3 *** Next part is designed to retrieve IDs from each Username or Book if further needed.
4 *** This part is used to remove or delete a book completely from the database. You can also go back to the 1st
4 *** part and do this alternatively by setting Number of Instances of the specific book you wish to remove, a "0"
4 *** value so that copies of it would no longer exist in the book repository.
5 *** The 5th part that contains four entries is engineered in order to be clearly intended to borrow a specific
5 *** book by their ID and they will be immediately assigned to a User profile once user is authenticated.
6 *** The 6th widgets are just as clear as the 5th part. as they do useful tasks but adversely similar. which
6 *** means they are designed to give a borrowed book back. Just like how the same book cannot be borrowed after
6 *** it's borrowed twice by a User, nor can it be returned twice by the User. rest assured same applies to all
6 *** users.
*** rest of it is all up to you to navigate through the GUI environment to further learn how to get the best
*** out of its functionalities.
*** And JUST IN CASE a book was completely purged from the database by "Delete a Book" feature, and a user had
*** previously borrowed it therefore owing it to the library and cannot give it back due to an issue that the
*** book no longer exists in database, manually refer to the "Free.py" Tool located in the "Free a user" Folder
*** in the "Additional Complementary Tools" Directory and receive the specific book from them and manually check
*** the date and time they had borrowed it by also using "Show.py" Tool in the "Show Database" directory under the
*** same parent directory "Additional Complementary Tools" and viewing the records using its full-fledged GUI.

Exit Button added
Exit Buttons have become more organized
Silenced some input errors
Implemented more data type sensitivity into Library
Subtly changed the way project looks
Center-aligned anything being typed into the entry fields
Runtime User-Guid pop-up mode added
Now the program is capable of generating event logs specific to every admin identifying them with their username that helps managers track the ongoing activities.
To prevent abuse, i have implemented an algorithm to limit the number of books each user can borrow.
Handled some type errors that had occured during dev-tests.
Users can extend their return duration up to 15 days tops.
Users cannot borrow more than 2 books in a row.
Book Deletion can be locked by admin.
If Book Deletion of a specific book has been locked by an admin, it cannot be deleted and the number of available instances of the book will reach to zero.
If a user borrows a book for a certain period of time and then decides to borrow another book immediately after, but for a shorter time, the duration for the second book is extended to include the remaining time from the previous book.
Library admins cannot update books when the book is on "Reserved" mode.
If a book is returned while the 'Reserved' mode is activated, the user who borrowed it has fulfilled their obligation, but the book has not been added back to the library.
Admin register applet added! Now admins must register to use the Library Management software.

MIT LICENSE :

MIT License
Copyright (c) 2023 Mohammad Dorri
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
 IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Closed.


Move to SCSS with Autoprefixer

In order to keep growing naturally, we want to transition to SCSS.
Things that should happen:

[ ] Ensure we use webpack but actually exporting a CSS file without needing to import the CSS  from JS. (Which is the Webpack way)
[ ] Use autoprefixer to remove all prefixes.
[ ] Current comments should be kept where they make sense and also in the output.
[ ] Separate in units as smaller as possible so it's clear where to look when needing to change something or add something.

It is ok to you to add that structure? https://github.com/CKGrafico/Gulp-Boilerplates/tree/master/app/scss

Doing

[X]  Ensure we use webpack but actually exporting a CSS file without needing to import the CSS from JS. (Which is the Webpack way)
[X] Use autoprefixer to remove all prefixes.

The structure you mentioned seems alright to me btw!

Thanks for contributing @CKGrafico! :)

Can we please remove the generated files from the PR? It gets harder to review.

We can do it on the last commit, I'm working on the code now

-[x] Current comments should be kept where they make sense and also in the output.
Now is generating webslides.css and webslides.min.css

I think that is enough for my side for this moment xD you have super big CSS files I think that is your turn to split it on multiple files I've ended my PR with this if is OK for you https://github.com/jlantunez/webslides/pull/53 (for a guy that hates webpack, not bad haha)
I suggest to you to use BEMIT or something similar if you want

https://github.com/CKGrafico/Gulp-Boilerplates/tree/master/app/scss
http://blog.ckgrafico.com/tomando-decisiones-estructurar-los-componentes-css/ (ESP)

Deleted non required files

Thanks so much @CKGrafico 👍

Tell me if you need something else before approve the PR


fix(clang-tidy, colcon-build): use Debug for CMAKE_BUILD_TYPE

Description

Release can overlook some mistakes.
Related: https://github.com/autowarefoundation/autoware.universe/issues/1959
Pre-review checklist for the PR author
The PR author must check the checkboxes below when creating the PR.

[x] I've confirmed the contribution guidelines.
[x] The PR follows the pull request guidelines.

In-review checklist for the PR reviewers
The PR reviewers must check the checkboxes below before approval.

[ ] The PR follows the pull request guidelines.

Post-review checklist for the PR author
The PR author must check the checkboxes below before merging.

[ ] There are no open discussions or they are tracked via tickets.

After all checkboxes are checked, anyone who has write access can merge the PR.

From this comment, I'll use Debug.
https://github.com/autowarefoundation/autoware.universe/issues/1959#issuecomment-1259351708

What I had in mind was adding a step to also compile and run tests with Debug, not replacing Release. I believe continuing to test Release is important because it reflects the state that the end application will (or at least should) be using.
Doing both compilations and tests all the time would probably be wasteful in time and resources. So maybe only on the nightly trigger?
But I was checking locally the result of colcon test on the whole autoware repository and I get a lot of packages failing:
14 packages had test failures: autoware_auto_control_msgs autoware_auto_geometry_msgs autoware_auto_mapping_msgs autoware_auto_perception_msgs autoware_auto_planning_msgs autoware_auto_system_msgs autoware_auto_vehicle_msgs autoware_control_msgs autoware_localization_msgs autoware_sensing_msgs behavior_velocity_planner freespace_planning_algorithms tamagawa_imu_driver velodyne_msgs

So maybe it's not such a good idea to add Debug right now. I think it would be good to look into each failure and fixing those first before adding it. For example, behavior_velocity_planner failed with:
2: occlusion_spot-test: /usr/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h:117: Eigen::DenseCoeffsBase<Derived, 0>::CoeffReturnType Eigen::DenseCoeffsBase<Derived, 0>::operator()(Eigen::Index, Eigen::Index) const [with Derived = Eigen::Matrix<float, -1, -1>; Eigen::DenseCoeffsBase<Derived, 0>::CoeffReturnType = const float&; Eigen::Index = long int]: Assertion `row >= 0 && row < rows() && col >= 0 && col < cols()' failed.

which doesn't look great.

@ambroise-arm Thank you for your comment. Okay, then I'll make it an option.

@kenji-miyake Yep, looks good!

Thanks. I'll test it in autoware.universe.

Seems it's working.
https://github.com/autowarefoundation/autoware.universe/pull/1965


Bump to 1.19.2

Updated To Support Minecraft 1.19.2
ParchmentMC Mappings Used : 2022.09.04
Updated SPI Version to : 6.0.0
Updated MCP Version to : 20220805.130853
Updated Gradle Version to : 7.5.1
Updated ForgeGradle Version to : 5.1.56
Updated README.md
Tested With :
IDE : Eclipse 2022-06
OS : Windows 11
Java : Adoptium Java 17

Uhhh, Hello? It's been month since i started this pull request


add support for integer variables

Adding support for MILP (integer variables) should be quite doable and very useful.
The original author (@ztlpn) already made an implementation using branch & bound, but they only put in in the exemples folder instead of integrating it to the library itself: https://github.com/Specy/microlp/blob/4dc2acc643689730a8451ba9bb303c6437bb16f3/examples/tsp.rs
Integer problems are very common and a tiny implementation like the one in minilp would be very welcome for embedded use cases, such as the wasm.

Great ! Can you open a PR to good_lp to add the ability to use integer variables ?


Develop wireframes based on user research input

As user research draws to a close, iterate on wireframes for Extracts UI.

@binx this is one of the layout options… working on another one
Option 1

A few comments from a phone conversation with Rachel where we mentioned these:

The Brisbane card is good, but it might work better to link out to a whole page of just Brisbane.
The side-by-side layout is super interesting.
The contents of the sidebar ("request an extract", etc.) could be spread throughout the page, closer to where they are needed. For example, suggest that a user request an extract when they search for something and it doesn't exist, or scroll to the bottom of the list.
WoF + Search gives us the ability to match place searches that are included in another extracts, for example if a user searches for Fremont and we know that it’s contained within the bounds of the SF Bay Area. Many of the default extracts already contain generous surrounding countryside buffers.


Support open/closed intervals in StaticIntervalTree

First of all, thanks for a great library, we appreciate the work you have put into this.
We are using StaticIntervalTree to model time intervals [start,end) and use intervalsContainingPoint and also a bit of intervalsOverlappingInterval. As far as we understand, StaticIntervalTree models all intervals as closed. In our cases, the intervals are always open form the end, so we need to perform extra checks after the function calls.
While the extra checks are not a big problem performance-wise or functionality-wise, I thought this might be useful addition to the library? For our case the intervals are always interpreted the same way, e.g. we do not mix open and close intervals. Thus, it would be sufficient to add the interval interpretation as optional part of function call, like
tree.intervalsContainingPoint(0, { openBegin: false, openEnd: true})
tree.intervalsOverlappingInterval([0, 1], { openBegin: false, openEnd: true})

Do you see this as something that could belong to the domain of this library? If so, would you accept a contribution?

Out of curiosity, are your interval considering items with trivial successors/predecessors (like integers) or more like floats/dates?

Out of curiosity, are your interval considering items with trivial successors/predecessors (like integers) or more like floats/dates?

Dates definitely, but for the sake of Mnemonist, we convert them to integers (unix timestamps). The times we deal with, are exact.

Then, if what you need is just conditions about which comparison operators to use in the function bodies, and it does not have a negligible performance impact, I would gladly review a PR on subject @laurisvan. This said, what I don't remember well and could be a little bit weird API wise is that the constructor is not able to consider other intervals than [close, close], but the getting functions can? I am wondering.


Use ZCL mandatory attribute to determine ZHA light capabilities

Description:
The manadatory ColorCapabilities attribute should indicate whether a
light is capable of XY color changes and/or color temperature.
Related issue: fixes #9231
Checklist:
If the code communicates with devices, web services, or third-party tools:

[ ] Local tests with tox run successfully. Your PR cannot be merged unless tests pass

Hi @jkl1337,
It seems you haven't yet signed a CLA. Please do so here.
Once you do that we will be able to review and accept this pull request.
Thanks!

Looks good to me! 🎃


HAPROXY: Version 2.3.x supports Syslog Protocol (UDP/TCP)

We have a use case to migrate our central Syslog servers to be behind haproxy, and we need TCP and UDP backend, so haproxy version 2.3 will help us with our use case.
https://www.haproxy.com/blog/announcing-haproxy-2-3/#syslog-protocol-udp-tcp
https://cbonte.github.io/haproxy-dconv/2.3/configuration.html#3.10

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Hi @erwindwight, just some minor rubocop offenses, do you mind if I fix them and push the changes to your PR? Or you can do it if you want

Hello @erwindwight, can you add some tests here to provide the functionality ? Thank you and let me know when is ready to be merged, also if you need help or examples I'm here to help. Cheers !

i also have a use case for this :) would love to know how i can help with reviewing this and getting it merged

i can confirm this is working fine for me

I can confirm this is working fine for me

Hi @anthonysomerset
Thank you for taking the time to check this out.
We have had this working internally in our organization for some time.
This is pending proper unit testing, this is in my task list, but I can't find time to work on this.
Feel free to help on this part, and I would love to see this merge.


Unable to Load Gemma2 Model with SGLANG

Checklist

[X] 1. I have searched related issues but cannot get the expected help.
[ ] 2. The bug has not been fixed in the latest version.
[ ] 3. Please note that if the bug-related issue you submitted lacks corresponding environment info and a minimal reproducible demo, it will be challenging for us to reproduce and resolve the issue, reducing the likelihood of receiving feedback.
[ ] 4. If the issue you raised is not a bug but a question, please raise a discussion at https://github.com/sgl-project/sglang/discussions/new/choose Otherwise, it will be closed.
[ ] 5. Please use English, otherwise it will be closed.

Describe the bug
I am experiencing issues loading the Gemma2-9B model on a 24GB GPU using SGLANG. Despite trying various values for mem_fraction_static, I consistently encounter out-of-memory errors when increasing the value. If I decrease it, I receive a negative value for self.max_total_num_tokens.
In contrast, I can successfully load the same model on the 24GB GPU using VLLM with a GPU memory utilization of 0.95. Any guidance on resolving this would be appreciated.
Reproduction

Environment
sglang: 0.3.3.post1

@yileld sorry for tagging. Any idea?

see https://sgl-project.github.io/references/troubleshooting.html#cuda-out-of-memory
You can try --chunked-prefill-size 2048 and --cuda-graph-max-bs 8


Mohan_Diabetes_Prediction

AL/ML Assessments

Project Summary: Disease Prediction Model with Symptom-Based LLM Assistance
This project is a disease prediction model leveraging machine learning and a language model to enhance user interaction and accuracy in predictions. It includes:
Data Preprocessing: Cleaned and encoded data, added severity weights for critical symptoms.
Model Training: Built and evaluated multiple classification models, including Logistic Regression, Decision Trees, Random Forest, and Gradient Boosting, to identify diseases based on symptoms.
LLM Integration: Incorporated GPT-2 to provide explanations for symptoms and assist in Q&A for symptom-related queries.
Additional Features:
Confidence score display for each disease prediction.
Visualizations for prediction probabilities.
Interactive symptom selection with real-time prediction updates.
Model Optimization: Conducted hyperparameter tuning on Random Forest using GridSearchCV for improved performance.

make sure all files under your folder

make sure all files under your folder

yes sir

Please done fast

some error will come sir


Adding Troubleshooting details to MicroK8s add-on

We've had many users reach out via Slack about troubleshooting. Hopefully, this improvement in docs will get users more successful and autonomous in troubleshooting.
@evilnick could you please review?
cc @DomFleischmann

@evilnick can you please review and /lgtm if you think it's good to go?

/lgtm


Cant deposit a single item

When you try to put a single minegeld note in the deposit field, it goes back.

This merge from Beanzilla should resolve this issue.

This merge from Beanzilla should resolve this issue.


[images] Grid manager should be able to load in images with bottomless without breaking filters

@stuartromanek Is there a reason we'd want conventional paging in list managers while having bottomless in grid managers, or should we just go bottomless for all?

None that I can think of... What happens when you go from Grid to List? do you start from the top? (page 1 of pagination). I could see that being confusing..

I guess it's also still an open question whether switching from grid to list should be an option. Do both views add value?

I guess I'll ask more questions... what else does that view manage? Just images?
In the case of images, the benefit to List seems like 'more information in less space' but at the cost of being a strange pattern to browse images. What does seem valuable is being able to toggle the size of the thumbnail from the UI so that we get both in a single pattern.
@boutell I'm sure I'm missing something(s). Any thoughts?

Being able to toggle the thumbnail size would be nice. The layout types are
configurable, you could configure gridSmall and gridBig and have templates
for one extend the other.
It's meant to be architected so that when creating a subclass of pieces you
get the list view by default but you can configure as many views as make
sense in your use case. For instance blog posts that happen to almost
always have an important image could look great in a grid view.
On Wed, Apr 20, 2016 at 11:13 AM, Stuart Romanek<EMAIL_ADDRESS>wrote:

I guess I'll ask more questions... what else does that view manage? Just
images?
In the case of images, the benefit to List seems like 'more information in
less space' but at the cost of being a strange pattern to browse images.
What does seem valuable is being able to toggle the size of the thumbnail
from the UI so that we get both in a single pattern.
@boutell https://github.com/boutell I'm sure I'm missing something(s).
Any thoughts?
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/punkave/apostrophe/issues/519#issuecomment-212471636

--
*THOMAS BOUTELL, *DEV & OPS
P'UNK AVENUE |<PHONE_NUMBER>  |  punkave.com

This looks kinda silly still. We're just used to looking at it. Can we revive this? Could we go to just fitting the images in a fixed size grid space after all so we don't have to get crazy-clever?

@boutell do you mean the way the images load and stack is silly? I don't think that is this issue

The silliness, if it's silliness, is that without bottomless, there's a
ragged bottom to each "page." Yes?
There was going to have to be some cleverness on the front end to get
subsequent "pages" to load with bottomless that way... or, a revision to
paginate with a traditional grid... or did we decide what we have now is
cool?
On Mon, Sep 25, 2017 at 1:26 PM, Stuart Romanek<EMAIL_ADDRESS>wrote:

@boutell https://github.com/boutell do you mean the way the images load
and stack is silly? I don't think that is this issue
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/punkave/apostrophe/issues/519#issuecomment-331952901,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAB9fVf6NiJ4nIbmlU01sbwI9Qs8WjLJks5sl-JSgaJpZM4ILwRa
.

--
*THOMAS BOUTELL, *SUPPORT LEAD
P'UNK AVENUE |<PHONE_NUMBER>  |  punkave.com

I think this stemmed from just wanting less click'y pagination, not a design bug about the ragged edge.
My question was more directed at the bug where if you only put a handful of images in the media library, the image grid doesn't really behave the way you'd expect.
Bottomless would be cool but it also might be solved by ratcheting up pagination to like 50 images per 'page' or something.

Doesn't behave as you'd expect = they stack down rather than spreading across?

Yes

Did you have an idea on what to do about that part? Not using CSS columns
but something else to get the same visual effect but spread across?
On Mon, Sep 25, 2017 at 1:58 PM, Stuart Romanek<EMAIL_ADDRESS>wrote:

Yes
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/punkave/apostrophe/issues/519#issuecomment-331962541,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAB9fcdcgRYTHd1qMHHWaqE9y20ikpFiks5sl-nNgaJpZM4ILwRa
.

--
*THOMAS BOUTELL, *SUPPORT LEAD
P'UNK AVENUE |<PHONE_NUMBER>  |  punkave.com

I don't have anything to replace it with at present, we could probably move to flexbox but it doesn't seem like high priority. @austinstarin @bgantick get at me if there is something obvious with the same wins as the current responsive columns.
@boutell Do you have thoughts on either implementing bottomless or pumping up the default perPage ?

... Like how I switched that up?
Our design has batch controls at the bottom. Do we use an internal scrollbar? That's not unreasonable but we should talk through it.
OK, so let's say we do that and now we're using bottomless. We've loaded one page of stuff and the browser has diced it into columns. Now we load a second page of stuff. And... the browser re-dices the columns, and some new stuff is now at the top and some new stuff is now at the bottom. Right?
https://www.youtube.com/watch?v=r7IlrDNq9h8
I don't know how we fix that one but it would be cool if we could.

Confirmed this in a little fiddle that just appending to css columns does not do a sane thing, so that is out.
I think we should just increase the per page.

... Yeah, probably. The alternative would be to create columns dynamically, as divs, with JavaScript, and dice incoming stuff into them, watching the height as you go and making sure it comes out reasonably even.
One disadvantage of both solutions is that the newest / top-sorting stuff is currently going down, not over, so you have to scroll down to see it, and that will be exacerbated by a taller page.
A "perfect" fix for the bottomless column-filling problem would still exhibit this weirdness, in that things would still be significantly out of order as you scroll down.
What about the way google images does it: variable width, fixed height, with a maximum width?
https://www.google.com/search?tbm=isch&source=hp&biw=1440&bih=731&q=fence&oq=fence&gs_l=img.3..0l10.640.1118.0.1<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>....0...1.1.64.img..<IP_ADDRESS>...0.-8xV1jB4QQY
This preserves left-to-right reading order in terms of how things are sorted, has no ragged bottom, and still has some flexibility in layout.

if we did fixed perfect dimensions we could just use good old fashioned float and it would remain simple to breakdown responsively (i think)

What's a fixed perfect dimension? As in using CSS "contain" in a fixed size
box, or something more like what google images is doing?
On Wed, Sep 27, 2017 at 9:54 AM, Stuart Romanek<EMAIL_ADDRESS>wrote:

if we did fixed perfect dimensions we could just use good old fashioned
float and it would remain simple to breakdown responsively (i think)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/punkave/apostrophe/issues/519#issuecomment-332528600,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAB9fU-6cdWbY85HqhV9g_0QlkK6HjZ7ks5smlOngaJpZM4ILwRa
.

--
*THOMAS BOUTELL, *SUPPORT LEAD
P'UNK AVENUE |<PHONE_NUMBER>  |  punkave.com

yeah, doing the google thing... having a set dimension for the image container and letting the image best scale to it without cropping it

Google's thing isn't quite that though. They are letting width vary, within
limits.
On Wed, Sep 27, 2017 at 10:23 AM, Stuart Romanek<EMAIL_ADDRESS>wrote:

yeah, doing the google thing... having a set dimension for the image
container and letting the image best scale to it without cropping it
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/punkave/apostrophe/issues/519#issuecomment-332537978,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAB9fSuoX5SA5UBxsrpeiFFI0mI2FVRZks5smlpkgaJpZM4ILwRa
.

--
*THOMAS BOUTELL, *SUPPORT LEAD
P'UNK AVENUE |<PHONE_NUMBER>  |  punkave.com


new tmux session per iTerm tab

Thanks for this!  It was driving me nuts that every session was duplicated with each tab in iTerm.  Without a lot of experience with tmux I didn't know what was going on.

you're very welcome @casey-robertson, I'm still finding my feet with tmux, so I'm only standing on the shoulders of @jldeen !

Updated with autoconnect=false changes  - super delayed, but thank you @imavroukakis!


add index.ipynb, change binder paths

fixes #95
test on mybinder.org:   https://mybinder.org/v2/gh/scottyhq/xarray-tutorial/index?labpath=index.ipynb

Works after I fixed the link. Nice!
I did find a typo, somehow the codespell action didn't catch it

indermediate/

It'd be nice to automate that index.ipynb. It seems like a sphinx toctree thing. So we could potentially have index.md with a sphinx toctree directive and present that: https://myst-nb.readthedocs.io/en/latest/authoring/text-notebooks.html#myst-notebooks-in-jupyter-interfaces

I did find a typo, somehow the codespell action didn't catch it

Yeah, codespell definitely does not catch all typos!

It'd be nice to automate that index.ipynb

Definitely agree, I'll have a look at how to do that.

index.md with a sphinx toctree directive

myst-markdown definitely seems nice, but i'm so used to ipynb! Looks like the numpy tutorial exclusively uses myst-nb https://numpy.org/numpy-tutorials/contributing.html#adding-your-own-tutorials

I wonder if this should instead be the workshops/scipy-2022/README.md file rendered as a notebook.

going to go ahead and merge this as a temporary fix. Could be nice to autogenerate a complete notebook index in the future!


Adding action to post artifact

This pull request updates the GitHub Actions workflow for building and deploying the pkgdown site. The most important changes include adding permissions for pull requests, saving artifacts, and posting artifacts to pull requests.
Enhancements to GitHub Actions workflow:

.github/workflows/pkgdown.yaml: Added pull-requests: write permission to the permissions section.
.github/workflows/pkgdown.yaml: Added steps to save the pkgdown-site artifact and post it to the pull request if the event is a pull request.

As part of this issue, it would be good to fix the broken bullet point rendering in the pkgdown website. It looks fine in the readme rendering, so it's a good test-case of what this can prevent in the future.

The issue has this task listed too. Is that something you'd be able to add here?
See this on the website:

I think fd5453e fixes the broken bullet.


Possible ManyToMany typo?

I'm reading through the docs and I see
    /** @ManyToMany(target = "Tag", though = "UserTag") */
    protected $tags;

At first glance, I read this as "entity has many Tag through UserTag" where UserTag is the join class somewhat. Thought to fix that and realized 👇🏾  this is how it's defined.
https://github.com/cycle/annotated/blob/master/src/Annotation/Relation/ManyToMany.php#L59
Could this be a case of a typo carried over because of IDE smarts? If this isn't the case, what's the thought process? I see this commit introduces "though", but the commit message doesn't really say why.
I know this is 2 years old, so it's a long shot; but I had to ask

This typo will be fixed in the next major update https://github.com/cycle/annotated/blob/2.0/src/Annotation/Relation/ManyToMany.php#L87

Awesome. Thanks.


added quick_sort_3

adding quicksort3 as an faster alternate of quicksort

This pull-request seems to be abandoned. I have taken the contribution and updated it to the specs and standards fo this repo and created #958 and closing this PR.


Back filling earlier tests Issue 1, 4 (#1321)

Back filling earlier tests Issue 1, 4 (#1321)

Added comment header to Dan's Issue 1.
Implemented Issue 4.
Re-ordered tests so they are contiguous.

@Aprogiena @noescape00

Looks good to me


⚠ Bofrost.de has degraded performance

In 3c6ca1b, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1298 ms

Resolved: Bofrost.de performance has improved in fc85c0f.


Remove link to 'Litepie Datepicker', website is taken over by scammers

It now redirects to all kind of weird scammy websites.
Consider removing the link all together, or maybe link to the Github repo? Downside of that is that the Github repo README is also plastered with links to the same website.

Hi @djfpaagman  👋
Very sorry for the delay.
We will correct this very soon.


Intermitent Integration Test Failures

The Java integration tests can loop forever waiting for Tomcat to startup and when it doesn't, they end up running for many hours before the runner abandons the job. I'd like to adjust that test to not wait forever.

haven't seen this in weeks so seems unnecessarily

I just saw a failure in syscalls-alpine where recvmsg01 was failing.

Superseded by https://github.com/criblio/appscope/issues/865


Issue #3742 Improve preset config change message

ask user to run 'crc delete' only when there's a preexisting CRC VM otherwise ask user to directly run 'crc setup' and then 'crc start'
fixes #3742

/retest

Some of the integration tests need to be updated:
[FAILED] Expected
      <string>: To confirm your system is ready, and you have the needed system bundle, please run 'crc setup' before start.

  to contain substring
      <string>: Changes to configuration property 'preset' are only applied when the CRC instance is created.

thanks, its in the integration/podman_test.go, have updated the expected substring in the o/p to be please run 'crc setup' before 'crc start'

e2e-microshit-crc fails with this during the start:
08:47:05.013589  stderr: level=info msg="Starting Microshift service... [takes around 1min]"
08:47:05.013808  stderr: level=debug msg="Using secret from configuration"
08:47:05.013812  stderr: level=debug msg="Creating /etc/crio/openshift-pull-secret with permissions 0600 in the CRC VM"
08:47:05.013864  stderr: level=debug msg="Running SSH command: <hidden>"
08:47:05.111557  stderr: level=debug msg="SSH command succeeded"
08:47:05.111582  stderr: level=debug msg="Using root access: Starting microshift service"
08:47:05.111622  stderr: level=debug msg="Running SSH command: sudo systemctl start microshift"
08:49:12.194346  stderr: level=debug msg="SSH command results: err: Process exited with status 1, output: "
08:49:12.194562  stderr: level=debug msg="Making call to close driver server"
08:49:12.194610  stderr: level=debug msg="(crc) Calling .Close"
08:49:12.194961  stderr: level=debug msg="Successfully made call to close driver server"
08:49:12.194989  stderr: level=debug msg="Making call to close connection to plugin binary"
08:49:12.195001  stderr: level=debug msg="(crc) DBG | time=\"2023-08-30T08:49:12Z\" level=debug msg=\"Closing plugin on server side\""
08:49:12.195181  stderr: ssh command error:
08:49:12.195185  stderr: command : sudo systemctl start microshift
08:49:12.195188  stderr: err     : Process exited with status 1
08:49:12.195191  stderr:
08:49:12.197975  stdout: exitCodeOfLastCommandInShell=1

/retest

latest integration test failure has :
level=debug msg="Uncompressing /home/packer/crc_libvirt_4.13.6_amd64.crcbundle to /home/packer/.crc/cache/tmp-extract"
Error getting bundle metadata: Unknown file format when trying to uncompress /home/packer/crc_libvirt_4.13.6_amd64.crcbundle

i think we need to reupload the bundle to gcp bucket, it has been more than one month, and retention policy is to keep the bundle for a maximum of 30 days

i think we need to reupload the bundle to gcp bucket, it has been more than one month, and retention policy is to keep the bundle for a maximum of 30 day

I am thinking to now update the testing to consume bundle from mirror instead uploading it to GCP. I will put PR for same.

/test integration-crc

/test integration-crc

integration-crc failing because crc setup is hitting a certificate issue as seen previously:
      level=debug msg="could not find cached bundle info in /home/packer/.crc/cache/crc_podman_libvirt_4.4.4_amd64: stat /home/packer/.crc/cache/crc_podman_libvirt_4.4.4_amd64: no such file or directory"
      level=info msg="Getting bundle for the CRC executable"
      level=debug msg="Ensuring directory /home/packer/.crc/cache exists"
      level=debug msg="Got bundle path: /home/packer/.crc/cache/crc_podman_libvirt_4.4.4_amd64.crcbundle"
      level=info msg="Downloading bundle: /home/packer/.crc/cache/crc_podman_libvirt_4.4.4_amd64.crcbundle..."
      level=debug msg="Using registries.d directory /etc/containers/registries.d"
      level=debug msg="Loading registries configuration \"/etc/containers/registries.conf\""
      level=debug msg="Loading registries configuration \"/etc/containers/registries.conf.d/000-shortnames.conf\""
      level=debug msg="Loading registries configuration \"/etc/containers/registries.conf.d/001-rhel-shortnames.conf\""
      level=debug msg="Loading registries configuration \"/etc/containers/registries.conf.d/002-rhel-shortnames-overrides.conf\""
      level=debug msg="Trying to access \"quay.io/crcont/podman-bundle:4.4.4\""
      level=debug msg="No credentials matching quay.io/crcont/podman-bundle found in /run/user/1000/containers/auth.json"
      level=debug msg="No credentials matching quay.io/crcont/podman-bundle found in /home/packer/.config/containers/auth.json"
      level=debug msg="No credentials matching quay.io/crcont/podman-bundle found in /home/packer/.docker/config.json"
      level=debug msg="No credentials matching quay.io/crcont/podman-bundle found in /home/packer/.dockercfg"
      level=debug msg="No credentials for quay.io/crcont/podman-bundle found"
      level=debug msg=" No signature storage configuration found for quay.io/crcont/podman-bundle:4.4.4, using built-in default file:///home/packer/.local/share/containers/sigstore"
      level=debug msg="Looking for TLS certificates and private keys in /etc/docker/certs.d/quay.io"
      level=debug msg="GET https://quay.io/v2/"
      level=debug msg="Ping https://quay.io/v2/ err Get \"https://quay.io/v2/\": x509: certificate signed by unknown authority (&url.Error{Op:\"Get\", URL:\"https://quay.io/v2/\", Err:x509.UnknownAuthorityError{Cert:(*x509.Certificate)(0xc000c47080), hintErr:error(nil), hintCert:(*x509.Certificate)(nil)}})"
      level=debug msg="GET https://quay.io/v1/_ping"
      level=debug msg="Ping https://quay.io/v1/_ping err Get \"https://quay.io/v1/_ping\": x509: certificate signed by unknown authority (&url.Error{Op:\"Get\", URL:\"https://quay.io/v1/_ping\", Err:x509.UnknownAuthorityError{Cert:(*x509.Certificate)(0xc000c47b80), hintErr:error(nil), hintCert:(*x509.Certificate)(nil)}})"
      level=debug msg="Accessing \"quay.io/crcont/podman-bundle:4.4.4\" failed: pinging container registry quay.io: Get \"https://quay.io/v2/\": x509: certificate signed by unknown authority"
      initializing source docker://quay.io/crcont/podman-bundle:4.4.4: pinging container registry quay.io: Get "https://quay.io/v2/": x509: certificate signed by unknown authority

/lgtm
/approve


As the source bit vector might change in a different thread,

ensure that we sample size once to avoid incosistent read outs during copy.
@toregge PR

Note that there is still a crash risk. If the original vector is shrunk after reading size and capacity then the AllocatedBitVector constructor might read past the end of the memory buffer allocated for the original vector.

Yes, but that situation should be guarded at a higher level.

There is no such guard there now.


Upgrade to cabal-<IP_ADDRESS>

This seems safe enough to merge since the PR only fixes warnings in test code and involves changes non non-code.


DynamoDB Table - how to add TTL functionality

Hi guys,
when creating a table like this (v2) how do I activate the TTL handling
 const table = new Table(stack, "pro-roji-io-sessions", {
    fields: {
      _idx: "string",
      _ttl: "number",
    },
    primaryIndex: { partitionKey: "_idx"},
  });

See this example below where I have implemented TTL. I have named the attribute expires_at but you could name it anything you like:
// create the user table
this.userTable = new Table(scope, "UserTable", {
  fields: { PK: "string" },
  primaryIndex: { partitionKey: "PK" },
  cdk: { table: { timeToLiveAttribute: "expires_at" } },
});

Thank you so much. That was exactly what I was looking for.

Just lifted the timeToLiveAttribute prop to the top level in v1.2.19.
It's a bit easier now:
this.userTable = new Table(scope, "UserTable", {
  fields: { PK: "string" },
  primaryIndex: { partitionKey: "PK" },
  timeToLiveAttribute: "expires_at",
});


fix: use GITHUB_OUTPUT instead of deprecated set-output command

https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#setting-an-output-parameter

set-output was deprecated.
AS IS
echo '::set-output name={name}::{value}'

TO BE
echo "{name}={value}" >> $GITHUB_OUTPUT

Updates #1004

I thought github.com/sethvargo/go-githubactions is useful because this library has already migrated to GITHUB_OUTPUT in v1.1.0, but I found the proposal was rejected. https://github.com/slsa-framework/slsa-github-generator/issues/153

Yeah, I think it's a useful library as well but I think we would only be using it for reading the context and setting outputs so it's not really worth adding another dependency.

Yeah, I agree.


VSCode Plugin

Clear and concise description of the problem
Would love to contribute to one if it does not exist. :)
Suggested solution
empty
Alternative
No response
Additional context
No response
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guide.
[X] Check that there isn't already an issue that request the same feature to avoid creating a duplicate.

Is this the official plugin https://github.com/yrming/vscode-case-police ?


Exclude docs from source distributions?

Notebooks are quite heavy.

Before #978 was merged, notebooks directory where 14MB but now, after moving to Jupytext they have reduced half that size, around 7.4MB. Are we still interested in excluding docs from source?

Yeah, even 7.4 MB is quite a lot. The only consumer of those source distributions is pip, I bet the rest of the users check out the documentation or the repository.

Sorry, I took into account some cache files since the actual disk usage of docs/source seems to be around 4.3MB. However, I agree with you about excluding this from source :+1:

Closed in #988


Viability for Essential

Yo,
I would like to know if this works same for upgrade from WS R2 2012 foundation to WS 2019 essentials. Or this works just for standart and datacenter.
Thank you very much.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 82772fa0-1642-4481-dff0-ebf83270db4d
Version Independent ID: e5d451c4-2ee0-9461-c19b-19d0cb199b42
Content: Upgrade Windows Server 2012 R2 to Windows Server 2019
Content Source: WindowsServerDocs/upgrade/upgrade-2012r2-to-2019.md
Product: windows-server
Technology: upgrade
GitHub Login: @RobHindman
Microsoft Alias: robhind

Luckily, there are a couple of answers to your question. It is up to you how you want to use that information and how you want to proceed. Depending on the amount of contact you have with any Microsoft Reseller sales department, you might even want to consider upgrading to Server Standard to be able to upgrade. Anyway, here is the current information on this topic:

https://docs.microsoft.com/previous-versions/windows/it-pro/windows-server-foundation/jj679892(v=ws.11)

Applies To: Windows Server 2012 R2 Foundation, Windows Server 2012 Foundation

... (skipping quite a bit down the page, see next link for direct access to the quoted section)

https://docs.microsoft.com/previous-versions/windows/it-pro/windows-server-foundation/jj679892(v=ws.11)#upgrading-windows-server2012-foundation

Upgrading Windows Server 2012 Foundation
Upgrade of Windows Server 2012 Foundation is not supported.

Related discussion in https://serverfault.com/ (StackExchange/ServerFault/StackOverflow et cetera):

https://serverfault.com/questions/473565/in-place-upgrade-from-windows-server-2012-foundation-to-windows-server-2012-stan

Reading that discussion you will notice that it can be possible to convert & upgrade (and maybe convert down) your version, but the methods are not supported by Microsoft.
So for all intents and purposes, from a Microsoft perspective (including Microsoft Support), the Foundation servers are not upgradable at all.


(improvement) Modals: added supporting on Enter clicking handlers

ticket- https://app.asana.com/0/1200372033300327/1201312814633129
related to: https://github.com/bitfinexcom/ufx-ui/pull/143

@dmytroshch published in ufx-ui/0.11.5


Find partial citations for decisions that don't yet have full citations, e.g. 22 U.S. ____ (2002)

Back in 2014, in https://github.com/freelawproject/courtlistener/issues/1601, @brianwc lamented that we don't handle partial citations very well. His example was:

The Supreme Court often cites its recent cases that don't yet have a full U.S. citation like so:
Bullcoming v. New Mexico, 564 U. S. ___ (2011).
We have Bullcoming v. New Mexico, know it is a SCOTUS case, and know it was filed in 2011.

Alas, we never got the citator working on these. I'm not sure it's worth the effort to do so now, but I thought I'd file an issue so we could track it as a gap in functionality.

Relinking my old PR on this: https://github.com/freelawproject/courtlistener/pull/1226
On the parsing side, I think this may be as simple as allowing "__" to be a valid page number here: https://github.com/freelawproject/eyecite/blob/master/eyecite/utils.py#L31

Yeah, I think we should start by focusing on the parsing side first. On the matching side, we have competing proposals of either:

Building up a list of all possible volumes for all reporters; or
Just doing lookups based on ± 1-2 years from the date of the opinion.

I actually think number two is more practical and less fragile. I'd say if we revisit this once the parser is done, that we take that approach.

I'm volunteering to pitch in on a solution to this if you'll have me.
I'm a 2YL, just finished up my "electronic legal research" and "legal analysis & writing a.k.a how to cite to bluebook" courses. I got decent grades. I'm also a moderately competent coder. I've got some spare time on my hands before it's back to law school.
I have some ideas I'd like to lay down. Just don't want to step on anyone's toes.

Go, go, go, @devlux76. We'd love the help. I think I highlighted one other issue that would be a good first-bug, but this would be a good one too, I think.

@mlissner would you like to revive this?

T shirt size estimate?


Added background image support for sections

Test URLs:

Original: https://www.sunstar.com/

Before: https://main--sunstar--hlxsites.hlx.live/_drafts/satyam/section-with-background

After: https://section-bg--sunstar--hlxsites.hlx.live/_drafts/satyam/section-with-background

[ ] New Blocks introduced in this PR
If yes, please provide details below

Block Name
Documentation

For e.g. cards
doc-link

[x] New variations introduced in this PR

Variation Name
Documentation

Section with background
doc-link

Shouldnt we want the content to be inside the background image in case of tablets and mobile too ?

Please refresh the page if you are changing the viewport using browser dev tools as the image does not auto-change on viewport change.

I think we need to also add a height to the picture/section, this is the first thing I see when I open the test url

Since I am using images as background (in CSS) , they cannot control the size of the section of which they are background of. Need to see what other options we have...

Shouldnt we want the content to be inside the background image in case of tablets and mobile too ?

If the content is more than the image can accommodate, it'd spill out, reason being that enlarging the image to cover the whole section may end up showing an undesirable enlarged version of the image. I think the authors need to ensure that they use the right combination of background image and text i.e. use larger images if they have a lot of other content in a section.

I think we need to also add a height to the picture/section, this is the first thing I see when I open the test url

Since I am using images as background (in CSS) , they cannot control the size of the section of which they are background of. Need to see what other options we have...

Could we do the same as the live page? Aka add a height to the section itself? It could be based on the background picture's dimensions

Could we do the same as the live page? Aka add a height to the section itself? It could be based on the background picture's dimensions

Yes, I changed the approach now to use an absolutely positioned picture element . This way the height of the picture is taken into consideration. Please take a look at the test url now.


Doesn’t support video embeds?

Hi there—if this is not a real issue then please remove. But when I go to copy + paste an iframe / embed script (YouTube or Vimeo), it works fine in the preview, but as soon as the post is updated it all gets stripped out of the content. How can I prevent this from happening?
Inserting embed code

Still there when I switch back to rich text mode

On “Update,” it’s all gone

That's due to Storytime.post_sanitizer which is called when a post is saved. post_sanitizer is just a hook to handle post content sanitization (i.e. which tags and HTML attributes to allow and/or disallow in a post). By default, the following Proc block is called and used to sanitize the content:
# lib/storytime.rb
@@post_sanitizer = Proc.new do |draft_content|
  white_list_sanitizer = if Rails::VERSION::MINOR <= 1
    HTML::WhiteListSanitizer.new
  else
    Rails::Html::WhiteListSanitizer.new
  end

  attributes = %w(
    id class href style src title width height alt value
    target rel align disabled name
  )

  white_list_sanitizer.sanitize(draft_content, attributes: attributes)
end

You can override this in your Storytime config file (config/initializers/storytime.rb) and handle post sanitization anyway you'd like (or not at all if you desire).
If you're just trying to add the iframe tag, and the frameborder and allowfullscreen attributes you should be able to use the following:
# config/initializers/storytime.rb

# Hook for handling post content sanitization.
# Accepts either a Lambda or Proc which can be used to
# handle how post content is sanitized (i.e. which tags,
# HTML attributes to allow/disallow.
config.post_sanitizer = Proc.new do |draft_content|
  white_list_sanitizer = if Rails::VERSION::MINOR <= 1
    HTML::WhiteListSanitizer.new
  else
    Rails::Html::WhiteListSanitizer.new
  end

  if Rails::VERSION::MINOR <= 1
    tags = white_list_sanitizer.allowed_tags
  else
    tags = Loofah::HTML5::WhiteList::ALLOWED_ELEMENTS_WITH_LIBXML2
  end

  tags.add("iframe")

  attributes = %w(
    id class href style src title width height alt value
    target rel align disabled name frameborder allowfullscreen
  )

  white_list_sanitizer.sanitize(draft_content, tags: tags, attributes: attributes)
end

If you'd just like to allow any content (no sanitization) you can just use the following:
# config/initializers/storytime.rb

# Hook for handling post content sanitization.
# Accepts either a Lambda or Proc which can be used to
# handle how post content is sanitized (i.e. which tags,
# HTML attributes to allow/disallow.
config.post_sanitizer = Proc.new do |draft_content|
  # No need to sanitize content, just passing it through...
  draft_content
end

Let me know if this helps.

I'm sure others will run into this at some point, so I'll add a wiki entry expounding on post sanitation.
Thanks!

Perfect. Much appreciated! Figured something like that was occurring.
On Sun, May 3, 2015, 9:59 PM Brandon Robins<EMAIL_ADDRESS>wrote:

I'm sure others will run into this at some point, so I'll add a wiki entry
expounding on post sanitation.
Thanks!
—
Reply to this email directly or view it on GitHub
https://github.com/FlyoverWorks/storytime/issues/158#issuecomment-98566583
.

A slightly better version than what I originally posted that uses the defaults of the Rails sanitizers in use, and adds the "iframe" tag and  "frameborder" and "allowfullscreen" attributes.
# Host app: config/initializers/storytime.rb

config.post_sanitizer = Proc.new do |draft_content|
  if Rails::VERSION::MINOR <= 1
    white_list_sanitizer = HTML::WhiteListSanitizer.new
    tags = white_list_sanitizer.allowed_tags
    attributes = white_list_sanitizer.allowed_attributes
  else
    white_list_sanitizer = Rails::Html::WhiteListSanitizer.new
    tags = Loofah::HTML5::WhiteList::ALLOWED_ELEMENTS_WITH_LIBXML2
    attribtues = Loofah::HTML5::WhiteList::ALLOWED_ATTRIBUTES
  end

  # Add any additional tags or attributes to tags/attributes Sets here.
  tags.add("iframe")
  attributes.merge(["frameborder", "allowfullscreen"])

  white_list_sanitizer.sanitize(draft_content, tags: tags, attributes: attributes)
end

Interesting. This gives me a lot to play around with. Thanks again, @eanlain!


Credential Title in Credential Card is wrapped instead of ellipsis on Android

Steps to Reproduce
See screenshot.

Expected Result
The Credential title to not wrap, but have ellipsis ... like on iOS
Environment
Android
Workaround
None known
Severity
Low
Priority
Medium

https://github.com/hyperledger/aries-mobile-agent-react-native/pull/459


Ensure GDrive authentication is never triggered multiple times at once

Current state
While running the script two calls are being made that require authorization simultaneously. This will open two authentication windows and completing one will not automatically completing the other, leaving the application hanging (see step 5 in installation guide).
Fix

One way to fix this is to do a metadata call on startup to ensure we got authorization before moving on to asynchronous calls.
Another method is to simply avoid ever sending multiple GDrive requests at the same time, though that would reduce performance.

Fixed in https://github.com/daanjo3/multimc-filesync/releases/tag/v1.0.1


vscode rendering the wrong c# color themes while using c# ? syntactic sugar at the end of the line

VSCode Version:

OS Version: OSX 10.15.5

Steps to Reproduce:

with c# ? syntactic sugar

remove ?

Does this issue occur when all extensions are disabled?: Yes/No
YES

@lzw5399 can you please provide a copy-pastable example that shows the issue?

Hi @alexr00 , below is an example
using System.Threading.Tasks;
using System;
public class Example
{
    public async Task<string> Ok(string param)
    {
        return await Task.Run(() => "ok");
    }

    public void Method1()
    {
        var list = new List<string>();
        var filteredList = list? // <=
        .Where(it => it.Length > 3)
        .ToList();
    }

    public async Task<string> Error(string param)
    {
        return await Task.Run(() => "error");
    }
}

Thanks, I can repro. Moved to the repository that we get our C# grammar from https://github.com/dotnet/csharp-tmLanguage/issues/183


Change wg.Done sentences to start using defer

For multiples reasons:

Is safer
We can add more exit clauses without risk
Doesn't have performance footprint since version 1.14

(Thank you @agnivade for those points)

I have a question. How do I test it? It seems like it needs AWS machines and so on...


fix(mesh-policy): fixed paths to kong mesh specific policies

Description
What did you change and why?
This issue: https://github.com/Kong/docs.konghq.com/issues/5381 is still not fixed. So I am reopening pr with the fix
Testing instructions
Netlify link:
Checklist

[ ] Review label added
[ ] PR pointed to correct branch (main for immediate publishing, or a release branch: e.g. release/gateway-3.2, release/deck-1.17)

@Automaat I think the broken link test is failing because we need to add a few things since those pages are used twice in the sidebar.
Add these to the _redirects file:
/mesh/:version/features/meshglobalratelimit     /mesh/:version/policies/meshglobalratelimit
/mesh/:version/features/meshopa     /mesh/:version/policies/meshopa

Since we have generate: false already set for the items in the "Features" section, I think that just adding these redirects should fix the problem.

@cloudjumpercat I found a way for this to work, and to structure these docs in a more natural way. But broken link check is still failing on some strange svg files, could you help with that?

@Automaat Ah, I think that the file name somehow was switched to "kong-mesh" there instead of "kuma". In this file on this line it should be:
  <img src="/assets/images/diagrams/gslides/kuma_multizone.svg" alt="Kuma service mesh multi zone deployment" style="padding-top: 20px; padding-bottom: 10px;">


if  ref_model is a copy of act_model at begining in stage3 , does it mean the kl_divergence is 0?

kl_divergence_estimate = -self.kl_ctl * (log_probs - ref_log_probs)

At beginning in stage3, kl_divergence_estimate should be zero. But, after several steps, the generation of actor model might be different from reference model.
Please correct me if I make any mistake.

Thank you @liwyNo. Yes, that's just for one step

At beginning in stage3, kl_divergence_estimate should be zero. But, after several steps, the generation of actor model might be different from reference model. Please correct me if I make any mistake.

I found that actor model has lora parameters but the reference model doesn't , so they may be different although at the first step.

At beginning in stage3, kl_divergence_estimate should be zero. But, after several steps, the generation of actor model might be different from reference model. Please correct me if I make any mistake.

I found that actor model has lora parameters but the reference model doesn't , so they may be different although at the first step.

For lora, the lora_left_weight (https://github.com/microsoft/DeepSpeedExamples/blob/master/applications/DeepSpeed-Chat/training/utils/module/lora.py#LL39C14-L39C30) will be init with zero matrix which means the lora weight won't affect actor model at the first step.

At beginning in stage3, kl_divergence_estimate should be zero. But, after several steps, the generation of actor model might be different from reference model. Please correct me if I make any mistake.

I found that actor model has lora parameters but the reference model doesn't , so they may be different although at the first step.

For lora, the lora_left_weight (https://github.com/microsoft/DeepSpeedExamples/blob/master/applications/DeepSpeed-Chat/training/utils/module/lora.py#LL39C14-L39C30) will be init with zero matrix which means the lora weight won't affect actor model at the first step.

well, it is