iOS project complied error

I download the  newest  code,  followed README.ios step by step. but it errors when i execute "cmake -DCMAKE_TOOLCHAIN_FILE=cmake/iOSToolchain.cmake -GXcode"
CMake version:3.5.0
-- Could NOT find PkgConfig (missing:  PKG_CONFIG_EXECUTABLE)
-- FreeRDP GIT-dirty
-- Git Revision 80cd647
-- Skipping recommended feature libsystemd for systemd journal appender (allows to export wLog to systemd journal)
-- Skipping disabled feature X11 for X11 (X11 client and server)
-- Skipping disabled feature Wayland for Wayland (Wayland client)
-- Skipping disabled feature DirectFB for DirectFB (DirectFB client)
-- Finding required feature ZLIB for compression (data compression)
-- Finding required feature OpenSSL for cryptography (encryption, certificate validation, hashing functions)
-- Skipping optional feature MbedTLS for cryptography (encryption, certificate validation, hashing functions)
--     Enable feature MbedTLS using "-DWITH_MBEDTLS=ON"
-- Skipping disabled feature OpenSLES for multimedia (OpenSLES audio / video)
-- Skipping disabled feature OSS for sound (audio input, audio output and multimedia redirection)
-- Skipping disabled feature ALSA for sound (audio input, audio output and multimedia redirection)
-- Skipping disabled feature Pulse for sound (audio input, audio output and multimedia redirection)
-- Skipping disabled feature Cups for printing (printer device redirection)
-- Skipping disabled feature PCSC for smart card (smart card device redirection)
-- Skipping optional feature FFmpeg for multimedia (multimedia redirection, audio and video playback)
--     Enable feature FFmpeg using "-DWITH_FFMPEG=ON"
-- Skipping disabled feature GStreamer_0_10 for multimedia (multimedia redirection, audio and video playback, gstreamer 0.10 version)
-- Skipping disabled feature GStreamer_1_0 for multimedia (multimedia redirection, audio and video playback)
-- Skipping optional feature JPEG for codec (use JPEG library)
--     Enable feature JPEG using "-DWITH_JPEG=ON"
-- Skipping optional feature x264 for codec (use x264 library)
--     Enable feature x264 using "-DWITH_X264=ON"
-- Skipping optional feature OpenH264 for codec (use OpenH264 library)
--     Enable feature OpenH264 using "-DWITH_OPENH264=ON"
-- Skipping optional feature GSM for codec (GSM audio codec library)
--     Enable feature GSM using "-DWITH_GSM=ON"
-- Could NOT find PkgConfig (missing:  PKG_CONFIG_EXECUTABLE)
-- FreeRDP GIT-dirty
-- Could NOT find PkgConfig (missing:  PKG_CONFIG_EXECUTABLE)
-- FreeRDP GIT-dirty
-- Adding dynamic channel client server "audin": Audio Input Redirection Virtual Channel Extension
-- Adding static channel client server "cliprdr": Clipboard Virtual Channel Extension
-- Adding dynamic channel client "disp": Display Update Virtual Channel Extension
-- Adding static channel client server "drdynvc": Dynamic Virtual Channel Extension
-- Adding device channel client "drive": Drive Redirection Virtual Channel Extension
-- Adding dynamic channel client server "echo": Echo Virtual Channel Extension
-- Adding static channel client server "encomsp": Multiparty Virtual Channel Extension
-- Adding device channel client "parallel": Parallel Port Virtual Channel Extension
-- Adding static channel client "rail": Remote Programs Virtual Channel Extension
-- Adding static channel client server "rdpdr": Device Redirection Virtual Channel Extension
-- Adding dynamic channel client "rdpei": Input Virtual Channel Extension
-- Adding dynamic channel client "rdpgfx": Graphics Pipeline Extension
-- Adding static channel client server "rdpsnd": Audio Output Virtual Channel Extension
-- Adding static channel client server "remdesk": Remote Assistance Virtual Channel Extension
-- Adding device channel client "serial": Serial Port Virtual Channel Extension
-- Adding device channel client "smartcard": Smart Card Virtual Channel Extension
-- Adding dynamic channel client "tsmf": Video Redirection Virtual Channel Extension
-- Adding iOS client
-- Configuring done
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "audin-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "disp-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "echo-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "rdpei-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "rdpgfx-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "tsmf-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "cliprdr-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "drdynvc-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "encomsp-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "rail-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "rdpdr-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "rdpsnd-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "remdesk-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "drive-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "parallel-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "serial-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "smartcard-client" that is not in the export set.
-- Generating done
-- Build files have been written to: /Users/zoey/work/RDP/FreeRDP

@mangorui do you have a git commit for your newest code?

I have not changed the code。
I download it again , and complied, the error accours:
git clone https://github.com/FreeRDP/FreeRDP.git
cmake -DCMAKE_TOOLCHAIN_FILE=cmake/iOSToolchain.cmake -GXcode
-- Toolchain using default iOS SDK: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.2.sdk
-- Could NOT find PkgConfig (missing:  PKG_CONFIG_EXECUTABLE)
-- FreeRDP GIT
-- Git Revision 75ae3f5
-- Looking for pthread_mutex_timedlock in pthread
-- Looking for pthread_mutex_timedlock in pthread - not found
-- Looking for include file sys/eventfd.h
-- Looking for include file sys/eventfd.h - not found
-- Looking for include file sys/eventfd.h
-- Looking for include file sys/eventfd.h - not found
-- Looking for include file sys/timerfd.h
-- Looking for include file sys/timerfd.h - not found
-- Looking for include file poll.h
-- Looking for include file poll.h - not found
-- Looking for ceill
-- Looking for ceill - not found
-- Finding recommended feature libsystemd for systemd journal appender (allows to export wLog to systemd journal)
--     Disable feature libsystemd using "-DWITH_LIBSYSTEMD=OFF"
-- Could NOT find PkgConfig (missing:  PKG_CONFIG_EXECUTABLE)
-- Could NOT find libsystemd (missing:  LIBSYSTEMD_LIBRARY LIBSYSTEMD_INCLUDE_DIR)
CMake Warning at cmake/FindFeature.cmake:46 (message):
feature libsystemd was requested but could not be found! ON / FALSE
Call Stack (most recent call first):
CMakeLists.txt:626 (find_feature)
-- Skipping disabled feature X11 for X11 (X11 client and server)
-- Skipping disabled feature Wayland for Wayland (Wayland client)
-- Skipping disabled feature DirectFB for DirectFB (DirectFB client)
-- Finding required feature ZLIB for compression (data compression)
-- Found ZLIB: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.2.sdk/usr/lib/libz.tbd (found version "1.2.5")
-- Finding required feature OpenSSL for cryptography (encryption, certificate validation, hashing functions)
-- Found OpenSSL: /Users/zoey/work/RDP/FreeRDP/external/openssl/lib/libssl.a;/Users/zoey/work/RDP/FreeRDP/external/openssl/lib/libcrypto.a (found version "1.0.2g")
-- Skipping optional feature MbedTLS for cryptography (encryption, certificate validation, hashing functions)
--     Enable feature MbedTLS using "-DWITH_MBEDTLS=ON"
-- Skipping disabled feature OpenSLES for multimedia (OpenSLES audio / video)
-- Skipping disabled feature OSS for sound (audio input, audio output and multimedia redirection)
-- Skipping disabled feature ALSA for sound (audio input, audio output and multimedia redirection)
-- Skipping disabled feature Pulse for sound (audio input, audio output and multimedia redirection)
-- Skipping disabled feature Cups for printing (printer device redirection)
-- Skipping disabled feature PCSC for smart card (smart card device redirection)
-- Skipping optional feature FFmpeg for multimedia (multimedia redirection, audio and video playback)
--     Enable feature FFmpeg using "-DWITH_FFMPEG=ON"
-- Skipping disabled feature GStreamer_0_10 for multimedia (multimedia redirection, audio and video playback, gstreamer 0.10 version)
-- Skipping disabled feature GStreamer_1_0 for multimedia (multimedia redirection, audio and video playback)
-- Skipping optional feature JPEG for codec (use JPEG library)
--     Enable feature JPEG using "-DWITH_JPEG=ON"
-- Skipping optional feature x264 for codec (use x264 library)
--     Enable feature x264 using "-DWITH_X264=ON"
-- Skipping optional feature OpenH264 for codec (use OpenH264 library)
--     Enable feature OpenH264 using "-DWITH_OPENH264=ON"
-- Skipping optional feature GSM for codec (GSM audio codec library)
--     Enable feature GSM using "-DWITH_GSM=ON"
-- Could NOT find PkgConfig (missing:  PKG_CONFIG_EXECUTABLE)
-- FreeRDP GIT
-- Could NOT find PkgConfig (missing:  PKG_CONFIG_EXECUTABLE)
-- FreeRDP GIT
-- Adding dynamic channel client server "audin": Audio Input Redirection Virtual Channel Extension
-- Adding static channel client server "cliprdr": Clipboard Virtual Channel Extension
-- Adding dynamic channel client "disp": Display Update Virtual Channel Extension
-- Adding static channel client server "drdynvc": Dynamic Virtual Channel Extension
-- Adding device channel client "drive": Drive Redirection Virtual Channel Extension
-- Adding dynamic channel client server "echo": Echo Virtual Channel Extension
-- Adding static channel client server "encomsp": Multiparty Virtual Channel Extension
-- Adding device channel client "parallel": Parallel Port Virtual Channel Extension
-- Adding static channel client "rail": Remote Programs Virtual Channel Extension
-- Adding static channel client server "rdpdr": Device Redirection Virtual Channel Extension
-- Adding dynamic channel client "rdpei": Input Virtual Channel Extension
-- Adding dynamic channel client "rdpgfx": Graphics Pipeline Extension
-- Adding static channel client server "rdpsnd": Audio Output Virtual Channel Extension
-- Adding static channel client server "remdesk": Remote Assistance Virtual Channel Extension
-- Adding device channel client "serial": Serial Port Virtual Channel Extension
-- Adding device channel client "smartcard": Smart Card Virtual Channel Extension
-- Adding dynamic channel client "tsmf": Video Redirection Virtual Channel Extension
-- Adding iOS client
-- Configuring done
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "audin-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "disp-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "echo-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "rdpei-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "rdpgfx-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "tsmf-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "cliprdr-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "drdynvc-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "encomsp-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "rail-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "rdpdr-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "rdpsnd-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "remdesk-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "drive-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "parallel-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "serial-client" that is not in the export set.
CMake Error: install(EXPORT "FreeRDP-ClientTargets" ...) includes target "freerdp-client" which requires target "smartcard-client" that is not in the export set.
-- Generating done
-- Build files have been written to: /Users/zoey/work/RDP/FreeRDP

@mangorui as the build files have been written building should work fine.

I have resovled this issue: I changed CMake version from 3.5.0 to 3.4.3, then it works fine

@mangorui thank for the feedback. Possible that 3.5.0 has new features we aren't compatible with atm.


metacubexd: 1.150.0 -> 1.151.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for metacubexd is: Clash.Meta Dashboard, The Official One, XD
meta.homepage for metacubexd is: https://github.com/MetaCubeX/metacubexd
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 1.151.0 with grep in /nix/store/sdxrp4xxcqxz6xp29ixp5ywknbjlc6d9-metacubexd-1.151.0
found 1.151.0 in filename of file in /nix/store/sdxrp4xxcqxz6xp29ixp5ywknbjlc6d9-metacubexd-1.151.0

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath

metacubexd

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/sdxrp4xxcqxz6xp29ixp5ywknbjlc6d9-metacubexd-1.151.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A metacubexd https://github.com/r-ryantm/nixpkgs/archive/acf163b07d6c5d7577cb28e2d6023bc8107a304f.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/acf163b07d6c5d7577cb28e2d6023bc8107a304f#metacubexd

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/sdxrp4xxcqxz6xp29ixp5ywknbjlc6d9-metacubexd-1.151.0
ls -la /nix/store/sdxrp4xxcqxz6xp29ixp5ywknbjlc6d9-metacubexd-1.151.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

metacubexd

Maintainer pings
cc @Guanran928 for testing.

[!TIP]
As a maintainer, if your package is located under pkgs/by-name/*, you can comment @NixOS/nixpkgs-merge-bot merge to automatically merge this update using the nixpkgs-merge-bot.

Add a :+1: reaction to pull requests you find important.

@NixOS/nixpkgs-merge-bot merge

Build failure on aarch64-linux looks like a fluke
@ofborg build metacubexd

@ofborg build metacubexd

@NixOS/nixpkgs-merge-bot merge


Interface zif_appl_object not included in repo

The interface zif_appl_object is used in the following location, but is not in this repo.
https://github.com/abapTools/abapHtmlButton/blob/ff2b990ab7c8b09831b7c291fbc3db22636de19f/src/zif_html_button_cntl.intf.abap#L4
I tried to pull the current version and got activation errors.

Thanks for the tip. Will be fixed soon.


update

Hi, can you update the code ? many of function change in tensor flow. i update some of code but when i run training i got this error
TypeError: Fetch argument <function merge_all at 0x000001569E09D6A8> has invalid type <class 'function'>, must be a string or Tensor. (Can not convert a function into a Tensor or Operation.)

I'm not actively maintaining or supporting this repository. However, I'd be happy to look at any pull request if you make progress towards updating the code.


The "Code mentions" feature in codehike does not work in island.js

Describe the bug
I'm writing interactive documentation with Code Hike.
When using codehike's "Code mentions" feature, island.js failed to correctly parse and add mention effects, while the same code worked in codehike's examples/vite.
Reproduction
see https://codesandbox.io/p/sandbox/codehike-demo-jlzjwv
and see "Open devtool" -> "Preview:5173" -> "Click to view" -> "Menu" -> "Astro" in https://codesandbox.io/p/sandbox/ancient-tdd-zlh9qn?file=%2Fisland-app%2Fdocs%2F.island%2Fconfig.ts%3A39%2C37
Expected behavior
see https://codehike.org/docs/ch-section#code-mentions
System Info
-

Additional context
No response
Validations

[X] Read the docs
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.

Thank you for your feedback, it may be that the mdx compilation plugin has special handling for links, which makes the foucs:// link invalid


Really cool work

Really cool work, loved playing around with it!
If ever you're interested in having other users re-use your tools, you can also push them to the Hub (see the push_to_hub call in this guide), but it's, of course, not required :)
Is there anything we can do from transformers side to help you on this cool project? Did you run into any issues we can help fix?

@LysandreJik Thanks again for trying it out! We think the hub is a great way to increase accessibility.
We found it incredibly easy to get the agent interface working, and building custom tools was a breeze. A few things we observed while we were developing:

The push_to_hub() method errors out when pushing a tool with external dependencies. It would be great to have the ability to set a requirements.txt file when calling this method.
Can a collection of Tools be uploaded to a single space? Since they all have common external dependencies, it may make sense to bundle them together.

Kudos to you and your team for creating an excellent framework for agents. 👏

Can a collection of Tools be uploaded to a single space?

Our thinking was that each space would be a demo of the Tool, which doesn't work with multiple tools in the same space. There is however a function to get all tools repo from an organization if that helps.

Makes sense and that is indeed helpful! We'll try that and update our README, thanks @sgugger


How do i add icons into psych engine source

Describe your problem here.
I recompiled my game after deleting the export folder (bcs of an Goddamn error) and then decided to make most stuff at source
i was using the Source code Guide, so it was using the Funkin-master / Kade Engine Source, Making it complicated to add the icons, since i can't do shit in HealthIcon.hx bcs there's nothing to add icons
I REALLY need help, since in my other issues, NOBODY comments on there.
Are you modding a build from source or with Lua?
Source
What is your build target?
Windows x64
Did you edit anything in this build? If so, mention or summarize your changes.
Nah, just added a characater goddamit

you just need to put your character icon to mods/your_mod/images/icons name it icon-your_character  and make sure your icon res is 300 x 150 . i hope this help you

if you want it to be part of /assets just go to assets/shared/images/icons

you just need to put your character icon to mods/your_mod/images/icons name it icon-your_character and make sure your icon res is 300 x 150 . i hope this help you

man this ain't helpful
i'm using source


023/auth integration

Answer to: https://github.com/ZZOutcasts/zzoutcasts-frontend/pull/61#discussion_r1008886224
This constant is used in UserLink to redirect user after logout

Answer to: #61 (comment) This constant is used in UserLink to redirect user after logout

Then you can simply redirect the user to home directly.


Mods list scrollbar cannot be used to scroll

Mods list scrollbar can not be used to scroll down through mod list.
Workaround: Mouse wheel can be used to scroll down if necessary.

Fixed in v0.3.8


Make package-private: SubscriptionAdminClient.pull/modifyAckDeadline/acknowledge/updateSubscription, TopicAdminClient.publish

@garrettjonesgoogle I was under the impression that we were only going to deprecate this. Do we package-private them too?

We were only marking them deprecated while the deprecated PubSub package still existed which referenced these methods; now that the deprecated PubSub package is deleted, we can make them package private.

@garrettjonesgoogle PubSubExample.java still seems to be using it :cry: I actually thought we deleted this a while back.
@lesv @jabubake Do you have any thoughts on how we might resolve this? With the new Subscriber class, it is no longer possible to separate pull and acknowledge messages.


Change XContentType to MediaType

Description
Change XContentType to MediaType
Issues Resolved
https://github.com/opensearch-project/job-scheduler/issues/433
Check List

[ ] New functionality includes testing.

[ ] All tests pass

[ ] New functionality has been documented.

[ ] New functionality has javadoc added

[X] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

@heemin32 BWC tests are failing since the sample extension plugin is still using OpenSearch version 2.9.0, whilst 2.x has been bumped up to 2.10.0. The sample extension plugin is used to run Job Scheduler BWC tests. In order to resolve this failure, it is necessary to update the version number here to 2.10.0

@heemin32 BWC tests are failing since the sample extension plugin is still using OpenSearch version 2.9.0, whilst 2.x has been bumped up to 2.10.0. The sample extension plugin is used to run Job Scheduler BWC tests. In order to resolve this failure, it is necessary to update the version number here to 2.10.0

Bumping the version to 2.10.0 fails because 2.10.0 is not available in maven repo. Will ignore bwc test for now.

@heemin32 BWC tests are failing since the sample extension plugin is still using OpenSearch version 2.9.0, whilst 2.x has been bumped up to 2.10.0. The sample extension plugin is used to run Job Scheduler BWC tests. In order to resolve this failure, it is necessary to update the version number here to 2.10.0

I think the reason why BWC tests are failing is because 2.9.0 release does not contain job-scheduler plugin in it.

Main is only wire compatible with the latest 2.x, which is currently 2.10.0, BWC tests will continue to fail until BWC tests are bumped up to 2.10.0 on the main branch, which i see there is a PR to do so here
CC : @cwperks

BWC tests for main has been fixed, raising manual backport of this PR here, to resolve build failures of the 2.x branch


Tiktoken's number of tokens does not match the number of tokens perceived by the gpt-3.5-turbo API

We have a long prompt (shown at the bottom of this message). Tiktoken (with the encoding name cl100k_base) says this prompt has 2554 tokens, but OpenAI's API says that this prompt contains 2561 tokens.  This mismatch is causing issues for our application.
We are using Tiktoken like this:
encoding_name = "cl100k_base"
encoding = tiktoken.get_encoding(encoding_name)
num_tokens = len(encoding.encode(string))

To say there are 2554 tokens.
Prompt:

As a PromptParser, your objective is to carefully analyze prompts and divide them into two distinct components: an 'Instruction' that provides the primary description of the task, and 'Demonstrations' which are optional examples showcasing the task. Your aim is to generate a JSON dictionary response containing the `Instruction` and `Demonstrations` fields, corresponding to these two components. In case there are no demonstrations provided, the 'Demonstrations' field should be marked as 'N/A'. When including demonstrations, only consider complete examples that consist of both input and output pairs, disregarding any incomplete ones. It is crucial to maintain the precise formatting, word choice, and punctuation exactly as presented in the original prompt. Here are some parsed output you can refer to.

------

Prompt: """
I am trying to cluster entity strings on Wikipedia according to the Wikipedia article title they refer to. To help me with this, for a given entity name, please provide me with a comprehensive set of alternative names that could refer to the same entity. Entities may be weirdly truncated or ambiguous - e.g. "Wind" may refer to the band "Earth, Wind, and Fire" or to "rescue service". For each entity, I will provide you with a sentence where this entity is used to help you understand what this entity refers to. Generate a comprehensive set of alternate entity names as a JSON-formatted list.

Entity: "fictional character"
Context Sentence: "Jenna Marshall is a fictional character created by Sara Shepard for the `` Pretty Little Liars '' book series , and later developed for the Freeform television series adaptation by I. Marlene King and portrayed by Tammin Sursok ."
Alternate Entity Names: ["fictional characters", "characters", "character"]

Entity: "Catholicism"
Context Sentence: "At home , significantly more electorate residents spoke Italian , Cantonese , Mandarin and Greek at home , and whilst the top three religions (Catholicism , no religion and Anglicanism) differed little from other parts of Perth , Buddhism and Eastern Orthodox adherents outnumbered those of the Uniting Church ."
Alternate Entity Names: ["Catholic Church", "Roman Catholic", "Catholic"]

Entity: "Wind"
Context Sentence: "Illinois musicians with a # 1 Billboard Hot 100 hit include artists from the 1950s : Sam Cooke (d. 1964) ; from the 1960s : The Buckinghams ; from the 1970s : Earth , Wind & Fire , The Chi-Lites , The Staple Singers , Minnie Riperton , Styx ; from the 1980s : Chicago , Cheap Trick , REO Speedwagon , Survivor , Richard Marx ; from the 1990s : R. Kelly ; from the 2000s : Kanye West , Twista , Plain White T 's ."

"""

Parsed Outputs:
{"Instruction": "I am trying to cluster entity strings on Wikipedia according to the Wikipedia article title they refer to. To help me with this, for a given entity name, please provide me with a comprehensive set of alternative names that could refer to the same entity. Entities may be weirdly truncated or ambiguous - e.g. \"Wind\" may refer to the band \"Earth, Wind, and Fire\" or to \"rescue service\". For each entity, I will provide you with a sentence where this entity is used to help you understand what this entity refers to. Generate a comprehensive set of alternate entity names as a JSON-formatted list.", "Demonstrations": "Entity: \"fictional character\"\nContext Sentence: \"Jenna Marshall is a fictional character created by Sara Shepard for the `` Pretty Little Liars '' book series , and later developed for the Freeform television series adaptation by I. Marlene King and portrayed by Tammin Sursok .\"\nAlternate Entity Names: [\"fictional characters\", \"characters\", \"character\"]\n\nEntity: \"Catholicism\"\nContext Sentence: \"At home , significantly more electorate residents spoke Italian , Cantonese , Mandarin and Greek at home , and whilst the top three religions (Catholicism , no religion and Anglicanism) differed little from other parts of Perth , Buddhism and Eastern Orthodox adherents outnumbered those of the Uniting Church .\"\nAlternate Entity Names: [\"Catholic Church\", \"Roman Catholic\", \"Catholic\"]"}

------

Prompt: """
You are an expert baker answering users' questions. Reply as agent.

Example conversation:

User: Hey can you help me with something

Agent: Sure! What do you need help with?

User: I want to bake a cake but don't know what temperature to set the oven to.

Agent: For most cakes, the oven should be preheated to 350°F (177°C).

 Reply as agent.", "Demonstrations": "User: Hey can you help me with something\n\nAgent: Sure! What do you need help with?\n\nUser: I want to bake a cake but don't know what temperature to set the oven to.\n\nAgent: For most cakes, the oven should be preheated to 350°F (177°C)."}

------

Prompt: """
You are given a list of integers. A list is shown by comma-separated numbers between two brackets. For example, [7,3,6] is a list. The number in location one is 7, the number in location two is 3, and the number in location three is 6. You should answer with a list such that every element at each location is equal to the product of elements at every other location in the input array.
"""

Parsed Outputs:
{"Instruction": "You are given a list of integers. A list is shown by comma-separated numbers between two brackets. For example, [7,3,6] is a list. The number in location one is 7, the number in location two is 3, and the number in location three is 6. You should answer with a list such that every element at each location is equal to the product of elements at every other location in the input array.", "Demonstrations": "N/A"}

------

Prompt: """
I am learning Japanese. Please translate some Japanese sentences to English. For example, Japanese: その日、人類は思い出した。
"""

Parsed Outputs:
{"Instruction": "I am learning Japanese. Please translate some Japanese sentences to English.", "Demonstrations": "Japanese: その日、人類は思い出した。

------

Prompt: """
来到美国后，我需要学习如何自己做饭。你能告诉我一些菜需要准备的原料么？这里有一些例子：1. 菜名：西红柿炒蛋。原料：2. 菜名：青椒肉丝炒肉。原料：瘦肉、青椒、调味料（如大蒜、姜、料酒、生抽、盐、糖、鸡精或味精、胡椒粉）、植物油。
"""

Parsed Outputs:
{"Instruction": "来到美国后，我需要学习如何自己做饭。你能告诉我一些菜需要准备的原料么？", "Demonstrations": "2. 菜名：青椒肉丝炒肉。原料：瘦肉、青椒、调味料（如大蒜、姜、料酒、生抽、盐、糖、鸡精或味精、胡椒粉）、植物油。"}

------

Prompt: """
As a programer, I am learning software development. Here are some of my problems. Input: What is CI/CD? Output: CI/CD is a way to automate and speed up software development by continuously integrating code changes and deploying them quickly and reliably. Input: What is Git? Output:
"""

Parsed Outputs:
{"Instruction": "As a programer, I am learning software development. Here are some of my problems.", "Demonstrations": " Input: What is CI/CD? Output: CI/CD is a way to automate and speed up software development by continuously integrating code changes and deploying them quickly and reliably."}

------

After seeing these parsed output, please parse this prompt:

Prompt: """
Your task is to generate an answer to a natural question. In this task, the input is a string that consists of both a question and a context passage. The context is a descriptive passage related to the question and contains the answer. And the question can range from Math, Cultural, Social, Geometry, Biology, History, Sports, Technology, Science, and so on.

Here are examples with input questions and context passages, along with their expected outputs:

input="Question: What city did Super Bowl 50 take place in? Context: Super Bowl 50 was an American football game to determine the champion of the National Football League (NFL) for the 2015 season. The American Football Conference (AFC) champion Denver Broncos defeated the National Football Conference (NFC) champion Carolina Panthers 24–10 to earn their third Super Bowl title. The game was played on February 7, 2016, at Levi's Stadium in the San Francisco Bay Area at Santa Clara, California. As this was the 50th Super Bowl, the league emphasized the "golden anniversary" with various gold-themed initiatives, as well as temporarily suspending the tradition of naming each Super Bowl game with Roman numerals (under which the game would have been known as "Super Bowl L"), so that the logo could prominently feature the Arabic numerals 50."
output="Santa Clara"

input="Question: What river runs through Warsaw? Context: Warsaw (Polish: Warszawa [varˈʂava] ( listen); see also other names) is the capital and largest city of Poland. It stands on the Vistula River in east-central Poland, roughly 260 kilometres (160 mi) from the Baltic Sea and 300 kilometres (190 mi) from the Carpathian Mountains. Its population is estimated at 1.740 million residents within a greater metropolitan area of 2.666 million residents, which makes Warsaw the 9th most-populous capital city in the European Union. The city limits cover 516.9 square kilometres (199.6 sq mi), while the metropolitan area covers 6,100.43 square kilometres (2,355.39 sq mi)."
output="Vistula River"

input="Question: The Ottoman empire controlled territory on three continents, Africa, Asia and which other? Context: The Ottoman Empire was an imperial state that lasted from 1299 to 1923. During the 16th and 17th centuries, in particular at the height of its power under the reign of Suleiman the Magnificent, the Ottoman Empire was a powerful multinational, multilingual empire controlling much of Southeast Europe, Western Asia, the Caucasus, North Africa, and the Horn of Africa. At the beginning of the 17th century the empire contained 32 provinces and numerous vassal states. Some of these were later absorbed into the empire, while others were granted various types of autonomy during the course of centuries."
output="Europe"

"""

Parsed Outputs:

If you're using the chat API are you accounting for the chat messages? E.g. see the discussion in Section 6 of https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb
If you have further issues, please contact<EMAIL_ADDRESS>


[stable/prometheus] allow non-yaml objects for configmap values

Is this a new chart
No
What this PR does / why we need it:
Fixes the bug quoted here: https://github.com/helm/charts/pull/18112#issuecomment-550349123
Special notes for your reviewer:
It is an edge case that had been raised in the issue above. The change to the chart is otherwise backward compatible.
Checklist

[x] DCO signed
[x] Chart Version bumped
[x] Variables are documented in the README.md
[x] Title of the PR starts with chart name (e.g. [stable/mychartname])

This is still not backwards compatible. It removes these from our configmap:
    anchore-pass: |
-     xxxxxxx

    prometheus.yml: |
      global:
        evaluation_interval: 20s
        scrape_interval: 20s
        scrape_timeout: 20s
-     rule_files:
-     - /etc/config/rules
-     - /etc/config/alerts
-     scrape_configs:
-     - job_name: prometheus
-       static_configs:
-       - labels:
-           env: xxxx
-      ...

I've been always wrong @max-rocket-internet .. thanks for pointing it out. Now updated. Does it look okay now? I've tested with a similar set up as yours.. lgtm.. Let me know.

Hey @premkumar-gg
Now just one small problem is that the indentation is change for same data:
    anchore-pass: |
-     xxx
-
+       xxx
...

Please check now @max-rocket-internet ... Done some thorough testing with different values..

Thanks again. Really looking forward to splitting our 2000 lines of alert YAML into separate files 😅

Thank you for the help!

/assign @gianrubio
Any update on this?

I ran into this issue yesterday as described in #18942 - can we get this merged?

cc @maorfr .. can you take a look please..

Or one of @mgoodness @gianrubio from chart owners file.

Any attention on this please..?

@davidkarlsen @maorfr @paulczar please  😃

@davidkarlsen @maorfr @paulczar please 😃

@davidkarlsen @maorfr @paulczar please 😃

/ok-to-test

/lgtm


Support VisionOS

Hey there, any idea when VisionOS will be supported?

Thank you for your suggestion.
I'll try to find out if I can support it.

Great! We don't have any users on Vision yet, but if we can confirm at some point I'll let you know.


Resources for Curriculum Dev

Just wanted to put my notes on this here so I don't forget them in future years. Some good online materials for astro/coding:
http://summerappspace.com/curriculum/
https://github.com/flatironinstitute/learn-sciware-dev

One topic I think we can expand on more next year is inheritance, making sure we define all the associated vocabulary, etc.


Misleading symbol name in type hierarchy

In the following code:
template <typename> struct RAV {};
struct A : RAV {};
struct B : RAV {};

If you invoke type hierarchy on the RAV token on the second line, the resulting type hierarchy tree is:
RAV
  A
  B

This is misleading, as it suggests that both A and B derive from RAV (when, in fact, B derives from RAV).
We should either consider the operation to be invoked on the specialization RAV, and limit the tree to things that derive from that specialization, producing:
RAV
  A

or we should consider the operation to be invoked on the template RAV, but then only show RAV in the symbol name:
RAV
  A
  B

I think the second option is likely to be more useful in practice.

Proposed fix


Card 4000 0000 0000 3063 does not trigger 3D Secure/SCA modal

Describe the bug
Card 4000 0000 0000 3063 does not trigger 3D Secure/SCA modal
I am using Subscriptions with free trial. On client side I am using SetupIntent after successful creation of subscription.
Similar to: https://github.com/stripe-archive/react-stripe-elements/issues/402
To Reproduce
Steps to reproduce the behavior:

Use card 4000 0000 0000 3063
Create subscription with trial period.
Use client_secret retrieved from previous step and use it to create a SetupIntent.

Expected behavior
This should create a webview, but it is not creating right now.
Screenshots
NA
Desktop (please complete the following information):

iOS: 15

Smartphone (please complete the following information):

iPhone 11
OS: 15

Additional context
Similar to: https://github.com/stripe-archive/react-stripe-elements/issues/402. Not sure why is that closed.

Hi @r1jsheth, sorry for the late response here. I'm not able to reproduce this on the most recent version of @stripe/stripe-react-native. Are you still running into this problem?

@charliecruzan-stripe yes, not reproducible in the latest version.
Please feel free to close this.
Thanks!


Update ectrans_compile_options.cmake to fix build error with Intel oneAPI 2025.0.0 ifx

Resolves #194

Thanks for this @climbfuji. Normal pull requests must target the develop branch. If you did this, your commit would be in the next release of ecTrans (probably 1.6.0 in a few months' time).
If you urgently need this commit in an ecTrans release, we can do it as a hotfix and make a 1.5.2 minor release.
Are you happy to continue your work using your own branch until we make the next major release, or would you prefer a minor release ASAP?

We don't need a release for this urgently. I'll add a conflict to the spack recipe to prevent this from happening to others. For now, JCSDA and Co can use ectrans 1.2.0, we can move up to 1.6.0 in a few months' time. But thanks for the offer!

https://github.com/spack/spack/pull/48238


Add option to disable Nack-replies in the pre-auth stages of the protocol

Status quo
Currently letmein always sends negative/reject messages, if something goes wrong during communication on the control port.
Enhancement
An option shall be added to disable pre-authentication negative/reject messages.
Pros

This could improve a stealth operation that is less visible to scanning. Especially in combination with #14.

Cons

Feedback to the user is less explicit and slower. No clear error messages. Only timeouts instead.

Open questions

none

Will be implemented in letmein 7.2.0.

Released in 7.2.0.


Inconsistent to_json() return type

Initial Checks

[X] I have read and followed the docs and still think this is a bug

Description
to_json() returns a str for models inherited from BaseDoc, whereas it is bytes for DocList
Example Code
from docarray import BaseDoc, DocList

class MyModel(BaseDoc):
    text: str

print(type(MyModel(text="abc").to_json())) # <class 'str'>
print(type(DocList[MyModel]([MyModel(text="abc")]).to_json())) # <class 'bytes'>

Docarray Version
0.37.1

Affected Components

[ ] Vector Database / Index
[ ] Representing
[X] Sending
[ ] storing
[ ] multi modal data type

I will take a look


Parse road link information

Changed parsing of road link information to look for attributes instead of children.
I noticed that all road links were being parsed into empty objects ({elementID = "", elementType = "", contactPoint = ""}), and that the ASAM specification and the maps I was referencing have road link contents stored as attributes instead of children. This fix seemed to work.
Thanks a ton for providing and maintaining this library.

Thanks for fixing this! You're correct. I'm not doing anything with road link information so far so this went unnoticed.


[Request] Add the seconds for clock option

bump

I've added this functionality and opened a pull request.


WIP: Synthesis dvsim integration and dashboard

This is a draft PR with initial integration of synthesis targets in dvsim.
Features to be added:

[x] Add SynCfg.py class that derives from OneShotCfg.py
[x] Add initial config hjson files to enable running DC
[x] Add parser script to parse synthesis reports
[x] Add synthesis dashboard generation and publication mechanism
[ ] Extend DVSIM to support plots
[ ] Add some nice synthesis dashboard plots for area splits (e.g. pie or bars)
[ ] Add history mechanism that compares synthesis results with the last couple of runs

Note also that this PR is dependent on #1679 #1739 which need to go in first.

First preview of synthesis dashboard available here:
https://reports.opentitan.org/hw/top_earlgrey/syn/latest/results.html

@msfschaffner

Is DC run in topology mode (physical-implementation aware)?

no, at the moment this is a simple wire load model flow for getting rough estimates. but we plan to upgrade this at some point once we have the correct libraries available.

@msfschaffner  in the instance list (circuit complexity part), we can consider renaming "core" to"rv_core_ibex" in order to be consistent with other IP's names

Good point @tunghoang290780 . The names are parsed out from the synthesis area report, hence that would just be an RTL change. @GregAC @eunchan can we change the core instance name to something more descriptive as Tung suggests? E.e., rv_core_ibex_inst or similar?

I have split out the remaining features like support for graphs into the dvsim tracking issue #1727 such that we can make progress and move this in as soon as possible.
Let me do a final cleanup, and then I'll put this one up for review as well.

Rebased and on top of recent changes in the synthesis flow scripts, ready to go from my side.
The dashboard can be found here:
https://reports.opentitan.org/hw/top_earlgrey/syn/latest/results.html

Rebased and amended.

Thanks for the detailed review, @sriyerg.
I have split the PR into two commits to separate the lint flow updates from the synthesis features added. The lint flow updates make sure that the flow still works after changes in common files like Deploy.py.
This broke CI in the first place since I rebased out a new file. I have amended that, so hopefully that will pass now.

This latest version changes how the file list is passed to the synthesis script, i.e., we switched to VCS syntax now, which allows to reuse the .scr file generated by FuseSoC without having to parse it. Also the tool output paths and names have been cleaned up and simplified such that the report names do not contain the dut name anymore, and all tool output is now collected in {build_dir} as opposed to {sv_flist_gen_dir}.


Adds a CLI flag before applying nullability checks

Given that TypeScript 2.x is now in production and pretty stable, I opted for a --legacy CLI argument to #32 - I've imported the old interface test JS as a test case for the older output format.
Fixes #18 #32

nice 👍

add yourself to the changelog 😄

👍 cool, done


Materials.append_renumber adds double materials

Describe the bug
If you use problem.materials.append_renumber(mat) there will be two instances of mat in problem.data_inputs which will break a lot of things.
To Reproduce
problem = montepy.read_input("foo.imcnp")
new_mat = ...
new_mat.number = 5
problem.write_problem("bar")
new_problem.read_input("bar"0

Error Message (if any)
If an error message was printed please include the entire stacktrace. If it includes any specific values please change or remove them. For example:
---------------------------------------------------------------------------
NumberConflictError                       Traceback (most recent call last)
Cell In[9], line 1
----> 1 montepy.read_input("bar")

File ~/dev/montepy/montepy/input_parser/input_reader.py:29, in read_input(input_file, mcnp_version, replace)
     27 problem = mcnp_problem.MCNP_Problem(input_file)
     28 problem.mcnp_version = mcnp_version
---> 29 problem.parse_input(replace=replace)
     30 return problem

File ~/dev/montepy/montepy/mcnp_problem.py:289, in MCNP_Problem.parse_input(self, check_input, replace)
    287         raise e
    288 if isinstance(obj, Material):
--> 289     self._materials.append(obj, False)
    290 if isinstance(obj, transform.Transform):
    291     self._transforms.append(obj)

File ~/dev/montepy/montepy/numbered_object_collection.py:455, in NumberedDataObjectCollection.append(self, obj, insert_in_data)
    453         self._problem.data_inputs.insert(index + 1, obj)
    454     self._last_index = index + 1
--> 455 super().append(obj)

File ~/dev/montepy/montepy/numbered_object_collection.py:202, in NumberedObjectCollection.append(self, obj)
    200     raise TypeError(f"object being appended must be of type: {self._obj_class}")
    201 if obj.number in self.numbers:
--> 202     raise NumberConflictError(
    203         (
    204             "There was a numbering conflict when attempting to add "
    205             f"{obj} to {type(self)}. Conflict was with {self[obj.number]}"
    206         )
    207     )
    208 else:
    209     self.__num_cache[obj.number] = obj

NumberConflictError: There was a numbering conflict when attempting to add MATERIAL: 4, ['uranium'] to <class 'montepy.materials.Materials'>. Conflict was with MATERIAL: 4, ['uranium']

MCNP input file snippet
If applicable, please include a small section of the input file you were working on. If it includes any specific values please change or remove them. For example:
1 1 20
         -1000  $ dollar comment
        imp:n,p=1 U=350 trcl=5

C surfaces
1000 SO 1

C data
C materials
C UO2 5 atpt enriched
m1        92235.80c           5 &
92238.80c          95

Version

Version 0.4.0 (technically: 0.4.1.dev0+ged6f2d3.d20240827)

This is likely a result of #488.


[BUG] Opens two new tabs on clicking the repo issue links.

On clicking the issue links on any issue card two duplicate tabs are opened.
To Reproduce
Steps to reproduce the behavior:

Go to https://www.findissues.me/search/{any lang}.
Click on repo link (not repo link).
Error: Two duplicate tabs are opened.

Expected behavior
A single tab should open.
The problem is arising because there is a click event on the card and also on the issue links.
The two events overlap and fire simultaneously opening two duplicate tabs.

Hi @Priya434 , sure I'm assigning this issue to you.

Hi @Priya434 , are you willing to work on this issue?

Yep @anand346. I've fixed the bug and am opening a PR.

approved and merged the PR 👍


App Icon Fix for Android

This fixes the app from crashing in android builds due to the current app icon changer library supporting only iOS not android too. Changed library to a cross platform one

I tested this on iOS myself and made respective changes so therefore will merge


Support selective nullable columns

Pinot support for null support is configured at table level by setting tableIndexConfg.nullHandlingEnabled to true in TableConfig.
By setting this to true, all columns in the table are treated as nullable.
Given that nullable columns negatively impact in the heap and/or other optimizations, ideally,  we should let users to individually decide the nullability of each column.
In order to do that, we have to:

Change NullValueIndexType.createDeserializer to actually read indexes like other indexes does.
Change places where tableIndexConfg.nullHandlingEnabled is read (directly or indirectly) in order to use getIndex(StandardIndexes.nullValueVector()).isEnabled(). This includes

SegmentColumnarIndexCreator
BaseDefaultColumnHandler.createDefaultValueColumnV1Indices

From the config perspective, instead of treating null value vector as an index similar to inverted index, I'd suggest putting it as part of the field spec (nullable). See #10428 for prior discussions

The configuration shouldn't be a problem. IndexType.getConfig receives the schema as an argument, so it should be easy to read the field spec there. I guess I'm biased given that I don't have enough knowledge in that area, but I think the challenge will be in actually modifying the engine behavior in order to understand that the nullability granularity is at column level instead of table level.

When null handling is enabled, the engine should pull the null value vector from the column, and if the vector doesn't exist or is empty, we handle it as non-null. Basically using the actual index as source of choose when processing the queries

See https://github.com/apache/pinot/pull/10653 and https://github.com/apache/pinot/issues/10381


QA

Installed soft locally
Started an instance
Pushed a repo
Ran the command on a repo

Here's the actual text of the command and its output
soft-serve on  main [!?] via 🐳 desktop-linux via 🐹 v1.20.3 on ☁  (us-east-1)
✦ ❯ ssh test repo commit soft 191b8320a037dbb30fa36630b785ff4674c16d64 -c
The authenticity of host '[localhost]:23231 ([::1]:23231)' can't be established.
ED25519 key fingerprint is SHA256:ZEXFXEWF/kZa6MVCMvV65jfyc2GyYabkogseZ3WCxGw.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[localhost]:23231' (ED25519) to the list of known hosts.

  diff --git a/go.mod b/go.mod
  index 3bb9f77ba5d9d3ae88ff4dac0a1b1143850d47d2..7abac3f8ff7972a064f0118aed5feba1ccc8bc32 100644
  --- a/go.mod
  +++ b/go.mod
  @@ -19,7 +19,7 @@ require (

   require (
   	github.com/caarlos0/env/v8 v8.0.0
  -	github.com/charmbracelet/keygen v0.4.2
  +	github.com/charmbracelet/keygen v0.4.3
   	github.com/charmbracelet/log v0.2.2
   	github.com/charmbracelet/ssh v0.0.0-20221117183211-483d43d97103
   	github.com/gobwas/glob v0.2.3
  diff --git a/go.sum b/go.sum
  index ae63f72b62d9ff6e9360dd16d4e0bc1de9791e6f..a22804453a8d520351b52a9fdc6d8f3f1c16cce6 100644
  --- a/go.sum
  +++ b/go.sum
  @@ -23,8 +23,8 @@ github.com/charmbracelet/bubbletea v0.24.2 h1:uaQIKx9Ai6Gdh5zpTbGiWpytMU+CfsPp06
   github.com/charmbracelet/bubbletea v0.24.2/go.mod h1:XdrNrV4J8GiyshTtx3DNuYkR1FDaJmO3l2nejekbsgg=
   github.com/charmbracelet/glamour v0.6.0 h1:wi8fse3Y7nfcabbbDuwolqTqMQPMnVPeZhDM273bISc=
   github.com/charmbracelet/glamour v0.6.0/go.mod h1:taqWV4swIMMbWALc0m7AfE9JkPSU8om2538k9ITBxOc=
  -github.com/charmbracelet/keygen v0.4.2 h1:TNHua2MlXc6W1dQB2iW4msSZGKlb8RtxtmYDWUs4iRw=
  -github.com/charmbracelet/keygen v0.4.2/go.mod h1:4e4FT3HSdLU/u83RfJWvzJIaVb8aX4MxtDlfXwpDJaI=
  +github.com/charmbracelet/keygen v0.4.3 h1:ywOZRwkDlpmkawl0BgLTxaYWDSqp6Y4nfVVmgyyO1Mg=
  +github.com/charmbracelet/keygen v0.4.3/go.mod h1:4e4FT3HSdLU/u83RfJWvzJIaVb8aX4MxtDlfXwpDJaI=
   github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E=
   github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c=
   github.com/charmbracelet/log v0.2.2 h1:CaXgos+ikGn5tcws5Cw3paQuk9e/8bIwuYGhnkqQFjo=

Screeenshots
With color

Colorless

Screenshots to go with the last commit (https://github.com/charmbracelet/soft-serve/pull/331/commits/65d308e64eabe281e461ebd5bbe3d93cbb281818)
No flags:

Use -c:

Use -p:

Use both -cp:

Actually, I noticed a whitespace difference in that other commit. So here's one where I compared with the TUI
Top of the output:

Bottom of the output:


Custom name for system folder

Fixes issue #21
cc: @AdrianRossouw
This introduces the possibility of specifying when calling the fuge generate system and extra argument which specifies the system name.
Invoking fuge generate system foo creates a folder foo from the current working directory in which the fuge topology is going to be created.
In case the specified folder already exists, the wizard is going to prompt if the user either wants to override it or provide a new name for it.

LGTM


fqdn: Delay ipcache upserts until policies have been updated

Add a map for newly allocated identities to ipcache.AllocateCIDR
functions that the caller can use to insert the IPs to the IP cache later,
after affected endpoint policy maps have been updated.
Use this new functionality on the DNS proxy and policy update code
paths, that makes sure that new policy map entries are in place before
an IP received from a DNS server or a CIDR included in a policy is placed
in IP cache. This is really straightforward as the logic for waiting was
already in place.
The DNS poller path still inserts in to IP cache before policies
have been updated.
Signed-off-by: Jarno Rajahalme<EMAIL_ADDRESS>

test-backport-1.7

Locally passed runtime FQDN tests.

This is not a backport even though backport labels were automatically added :-)

Fixed up unit tests

test-backport-1.7

test-backport-1.7

CI infra problems:
11:04:24  go: creating work dir: mkdir /tmp/go-build035857946: no space left on device

test-backport-1.7

Build K8s 1.17 vm provisioning fail #20005 (Nov 19, 2020 9:48:01 PM), everything else succeeded, testing again.

test-backport-1.7

test-backport-1.7

Simplified 2nd commit a lot, re-testing

test-backport-1.7

Same failure in two different tests: Cilium agent in ImagePullBackoff in Upgrade Downgrade test. Seems like the docker rate limiting issue?

@jrajahalme have you rebased? I believe we only merged the v1.7 backport for the image pull secrets mitigation on Friday afternoon.

Everything was green except the k8s tests which failed with imagepullbackoff due to docker ratelimits, so I will re-trigger to see if that rebases it to make CI pass.

test-backport-1.8

test-backport-1.7

The only failures are triggered because I accidentally ran the 1.8 backports jobs, which will guarantee to fail. All of the legitimate test checks were successful.  Merging.


Events are not triggered when using undo in the editor.

Hey, I needed a transform position event in the editor and it appears that while the position event is triggered when moving my gameobject around (which is really great! 🙏 ) undoing that displacement does not trigger the event.
Just wanted to let you know as I find it surprising that the undo does not access the transform position like anything else would 🤔

The same thing happens when manually editing x, y or z in the transform component inspector.

I think it'll be down to Undo happening on C++ side of things, probably just reverting to previously saved values. If that's the case then even in C# wrapper will unfortunately not be triggered at all (as property is not used at all).
This tool approach won't be able to help with that. If you're really keen I think I've seen somewhere someone using Microsoft Detours that hook/redirect directly to c++ methods. But it's probably an overkill for what you're after.
As for changing in editor you can have a look at UnityEditor.TransformInspector - it uses SerializedProperty to update / change bypassing actual .postion / .localPosition. It should be straight forward to create a Custom Inspector that uses properties so you can catch those changes.


Implement @go.log QUIT

Implements most of #95. A subsequent PR will add the optional @go.critical_section_begin argument.
Also adds test_filter to the affected test files, removed a little dead code from @go.log_command, updated a couple of existing log/main test cases, and refactored one of the demo-core/log test cases to use split_bats_output_into_lines.

Coverage decreased (-0.07%) to 94.349% when pulling c00332320d825f62fe1d48c215206af895e3930e on log-quit-#95 into 1e7b69eadaa724a3c5ded0b1c8503f4d7c994d2f on master.


Reimplementation a Hash using open addressing

Crystal Hash(K, V) should be reimplemented using open addressing and powers of two.
To be read:

http://www.idryman.org/blog/2017/05/03/writing-a-damn-fast-hash-table-with-tiny-memory-footprints/.
https://github.com/konovod/testhash
https://github.com/yxhuvud/crystal-hash
https://developers.redhat.com/blog/2017/02/27/towards-faster-ruby-hash-tables/
(sometimes 508) http://blog.redpanthers.co/behind-scenes-hash-table-performance-ruby-2-4

Thanks to @RX14, @konovod, @yxhuvud for links.
Refs #2817, #3932 and https://github.com/crystal-lang/crystal/pull/4033#issuecomment-307779149 to continue discussion and implementation.

Questions to be cleared:

current Hash implementation preserves order of insertion. Should new implementation do the same?

If so, then single valuable design is that is adopted by PHP, Python and Ruby: "open-addressing hash array" consists indexes to entries array.
With this design there is no much profit from clever alhorithms like "robin-hood hashing". Correctly implemented double hashing looks to be enough.

should Hash be able to contain more than 2^31 entries? It will cost additional memory and/or complexity.

should index array be compressed for small hashes? Or is it ok to alqays store indices as uint32?

which Key types could live without saved hash value? Obviously, integer types. Is it ok to always store hash for non-integer keys?
But even integer keys have to have bitmap for deleted entries.

Ruby behavior is: "Hashes enumerate their values in the order that the corresponding keys were inserted.". We usually follow Ruby behavior in these cases.

2^31 seems like reasonable limit (but you can propose 2^62 or something else).

Small hashes are common case just like a ruby.

Every object has the hash method that responds to get a hash value. It's OK to use it only.

Description: LLVM usually inline Int32.hash etc. calls because Hash is statically typed generic class.

With this design there is no much profit from clever alhorithms like "robin-hood hashing". Correctly implemented double hashing looks to be enough.

Why is this and are there benchmarks to back it up?

Every object has the hash method that responds to get a hash value. It's OK to use it only. Just to explain: LLVM usually inline Int32.hash etc. calls in release mode because Hash(K, V) is statically typed generic class.

@akzhan , but Crystal's current hash functions are just awful for hash table with "power of two". Especially awful Float "identity" functions:
$ crystal eval 'puts 1.0.hash.to_s(16)'
3ff0000000000000
yura@dell:~/Project/postgresql/build$ crystal eval 'puts 2.0.hash.to_s(16)'
4000000000000000

Every hash function is 'ok' if hash table is by prime numbers. But for "power of two" more work should be done.
And, by the way, looks like Crystal is the only contemporary language of "application level"  that doesn't fear of HashDos:

neither hash seeded in any way (with global or per-table seed),
nor "strong" hash algorithms used.

Is it intentionally? Is Crystal recommended for public interface, or is it for private tools only?

Why is this and are there benchmarks to back it up?

@RX14 , what cool algorithms (like "robin-hood" hashing) for?
RR is for:

cache-locality on lookup
high-density - big load factor
and short lookup chain with two previous property preserved.

With ordered hash table implemented as "indices array + entries array" both first two properties are not preserved:

cache-locality is destroyed by lookup to entries array with index.
It could be fixed if hash value is stored alongside with index. But it will cost memory footprint then.
load-factor is dictated by "entries array" reallocation strategy, and doesn't depends much on cleverness of "indices hash" algorithm. (Exception from the is Hash(Int32,Int32) - entries array comparable with indices hash array. But it whould be pity to introduce additional algorithmic complexity just cause of this case).
with low load factor (0.33-0.66) , lookup chain is usually short regardless of algorithm cleverness. And since indices array usually smaller than entries array, it is better to simply reduce maximum load factor.
With clever trick, first two lookup are could be made into consecutive cells of indices array even if "double-hashing" is used.
deletion is already have to be handled within entries array (for correct iteration). And rehashing have to be done when entries array is full. So no need in clever deletion algorithm.

I agree that clever algorithms are useful. But it will be useful for UnorderedHash, if some will add it to Crystal. Ordered Hash table destroys much of gain from cleverness.

I was sure we further hashed the #hash return value with a hash with better distribution. I must be going crazy.
@funny-falcon Why do we need an entries array instead of simply using a doubly linked list inside an Entry struct as we do now? Doesn't this solve most of the problems you listed.

@funny-falcon

Thanks for deep into FloatXX.hash implementations. It's yet another reason to reimplement Float64.hash using something like _Py_HashDouble. Yes, WIP (introducing of frexp was first step).

Hash value must be seeded by Hash class itself. It is not implemented yet, but we have #3932.

OK, @funny-falcon - just to clarify, what do you recommend to implement following https://github.com/crystal-lang/crystal/issues/4557#issuecomment-308253835?
Anyway algorithms of object hashing will be adjusted.

Powers of two is not a dogma. It's just faster in some scenarios.

@funny-falcon Crystal is a work in progress, totally not production ready. Not a lot of thought (in fact I would say "none") has been given to hash functions, they "just work". Pull requests and discussions are welcome to discuss and enhance this, though I personally know nothing about the subject.

@asterite can we assume Hash(T) to should not honor ordering? (aka: recent Ruby behavior vs legacy 1.8.x one).
Working with that assumption, several changes can be recommended for Hash(T) without introducing yet another base class.
Thank you.

@RX14

I was sure we further hashed the #hash return value with a hash with better distribution. I must be going crazy.

You are not crazy. Just with "prime numbers" it was not strictly necessary. But both "power of two" and trick with multiplying instead of modulo requires that step, if original hash function is such dumb.

@funny-falcon Why do we need an entries array instead of simply using a doubly linked list inside an Entry struct as we do now? Doesn't this solve most of the problems you listed.

But it introduce new problems: how reliably and efficiently combine double-linked list and moving semantic of Robin-Hood hashing? At least it will demand additional memory for list. Should it be compressed for small hashes? If so, then you will have a lot of branches to deal with. And you will ruin insertion performance.
Consider that most hashes in applications are "delete-less" ie they are only filled and (rarer) updated. Especially web applications (that selects a lot of db records, and only shows them). For such hashes, "indices hash + entries array" is most efficient data structure (if order of insertion should be preserved).

@akzhan

OK, @funny-falcon - just to clarify, what do you recommend to implement following #4557 (comment)?
Anyway object hash functions will be adjusted.

First, I believe it is better to have:
  def hash_inc(state : HashState)
    state = state.mix(v1)
    state = state.mix(v2)
    state
  end
  # default implementation inherited from Object
  def hash
     state = HashState.new
     state = hash_inc(state)
     state.finalize
  end

For backward compatibility, it could be reverted:
   def hash
     ...
   end
   # also inserited from Object. Is it possible to inherit both default hash and hash_inc?
   def hash_inc(state : HashState)
      state.mix(hash)
   end

(If HashState is a struct. I believe, optimizer has more freedom with such design. But it is not dogma.)
And then, Hash will initialize HashState with global or per-table random seed.
Float's hash then could be implemented as:
struct Float64
   def hash_inc(state)
      state.mix(unsafe_as(Int64))
   end
end

Second, (a bit of self promoting) I "recommend" to use my hash function:
https://github.com/funny-falcon/funny_hash/blob/master/funny_hash.h
It is simple, fast enough, has state of just two variables, and has fast and simple incremental mode.
Probably it is not "bullet proof" as SipHash, but I believe it is just enough for hash-table hash-function.
I'd be happy to implementation all above if you like the design.

Powers of two is not a dogma. It's just faster in some scenarios.
Open addressing looks like just fit to modern processors.

With sane hash functions, "power of two" becomes sane choice.

@funny-falcon yeah it didn't hit me that Entry wouldn't be in the heap any more (if we wanted cache locality at least), you're right.
I think we should implement an ordered and unordered hash and see how fast we can make each one. Once we have data on how much of a performance difference it makes for insertion and deletion, we can decide. I'd like to see it kept ordered but if it's going to be 2x slower I don't think it's worth it.

Also power of 2 means that the hash table can have a load factor as low as 0.5 right? I'd prefer if our hash implementation was memory efficient.

@luislavena

@asterite can we assume Hash(T) to should not honor ordering? (aka: recent Ruby behavior vs legacy 1.8.x one).
Working with that assumption, several changes can be recommended for Hash(T) without introducing yet another base class.

@RX14

I think we should implement an ordered and unordered hash and see how fast we can make each one. Once we have data on how much of a performance difference it makes for insertion and deletion, we can decide. I'd like to see it kept ordered but if it's going to be 2x slower I don't think it's worth it.

Back in the time, I thought it was huge mistake to introduce ordered hash for default Hash in Ruby 1.9 , cause double linked list eats a lot of memory. But then PHP adopted this new design, and then Python, and now Ruby. Now I'm not sure.
Now I believe, two base classes is "righter" way to go. Question is: should OrderedHash or UnorderedHash be default Hash?

@RX14

Also power of 2 means that the hash table can have a load factor as low as 0.5 right? I'd prefer if our hash implementation was memory efficient.

In fact, prime numbers are less flexible in terms of memory/performance efficiency. Yes, you may have more prime numbers, but then you will pay for rehashing.
Power of two allows Linear Hashing. It is straight forward to implement with chaining. I implemented it once with Cuckoo Hashing. And I know implementation with Coalesce Chaining.
In any way, when we talk about OrderedHash implemented as "indices array + entries array", hash load factor affects only "indices array", and so doesn't matter that much.
And another point: memory efficiency is almost always result of tradeoff - you pay raw performance for memory efficiency. Cuckoo Hashing and Robin Hood hashing trades insertion performance for lookup performance and memory efficiency. I doubt usual application will win from this tradeoff.
I believe, there should not be "Ultimate Swiss Knife" Hash for every kind of usage. It should be convenient enough, fast enough and memory efficient enough for regular usage. It should not be "super convenient", nor "super fast", nor "super memory efficient", cause either "super" trades off from other.
And don't forget about code complexity: it should be simple enough to be confident in.
Those rare men, who need particular "super" should implement it by them-self, because they knows better what they want.

Ahh, I talk too much. Lets go to work.

I didn't mean to accept both ordered and unordered implementations into the stdlib, just to benchmark both and use that to decide which to accept later.

Then bechmark should a real application, not "microbenchmark".
Unordered open-addressing will beat ordered hash in almost every micro-benchmark, except, probably, iteration (and maybe insertion).
But will real application gain from this "victory"? It is a good question.
And OrderedHash-es are prooved to be useful, otherwise there weren't such hash in many standard libraries (Python had inefficient implementation for a while; before Ruby 1.9 became wildly adopted, ActiveSuport implemented ordered hash by itself).
So, certainly OrderedHash should be in stdlib. If it will perform at 90% of UnorderedHash performance, shouldn't it be default Hash? (imho, it should) 80%? 70%? (then choice is not so obvious to me :-) )

@funny-falcon that's what I was getting at, of course unordered will beat ordered in the benchmarks the question is how much.
I'm not entirely sure how much the compiler uses hashes but it might be a decent candidate for benchmarking (if you disable the LLVM parts and just dump the bc). Otherwise a web application uses hashes for http headers (and params but they're lazily parsed so you'll have to actually access those). Ideally we'd have both micro benchmarks and real applications being benchmarked with changes.

@sdogruyol, @eliasjp, @elorest and others: can You help to choose Hash implementation?  There is good question to be cleared:

current Hash implementation preserves order of insertion. Should new default implementation do the same?

Please read discussion (there are many questions).

Rust tries to be system language, and tries to be as efficient as possible. And then it adopted strange choses as SipHash24 and 92% load factor. I proud I convinced them to switch to SipHash13 (but I'm sure, simpler hash function will be enough). And they are ready to reduce load factor (not my proud :-) ).
What is Crystal's intention? Is it application language, or system language? Is it "convinient C/C++" or "fast Ruby"?
While Crystal certainly could be used for both,
I believe that intention dictates defaults and stdlib.
(But yeah, C++ std:vunordered_hash is awful :-) )
System language doesn't need bullet-proof super-convinient Hash as default. It needs fast Hash (and hash functions).
Application language should not demand programmer to think about such issue: Hash should be convinient and safe.

@funny-falcon
Just my opinion:
Default - Crystal is not system language. It's application/framework one.
Also looks like 25-50% load factor is OK.  Anyway we can implement OrderedMap and BusyMap, for example, as additional shards.

@funny-falcon what are the tradeoffs between Rust's hash map and what you're proposing for crystal. I'm not sure what you mean by " strange choices".

But it is just my opinion, Crystal compiler itself will explode with these assumptions :)

OrderedMap implemented in Ruby/PHP/Python way usually consumes less memory than current chaining approach with double-linked list for ordering. Of couse, it depends much on size of Entry (ie on sizeof Key + sizeof Value): if Entry is huge (much larger than size of 3 pointers), then chaining could be better. How often Crystal Hash is used with huge Structs as a key or value?

@funny-falcon what are the tradeoffs between Rust's hash map and what you're proposing for crystal.

Rust positions itself as a system language. But then they

blindly adopted slow hash function as default for hash,
blindly decided they have to be "memory efficient", and set up load factor > 90% without measurment of its impact on performance.

Now they corrects both decision to more sane:

default is SipHash13 instead of SipHash24, and there is easy way to use simpler/faster hash functions,
looks like they will reduce load factor down to 80-85%. Robin-Hood fills much better with it, and it is still considered "memory efficient".

Tradeoff of OrderedHash compared to RHH is, on the one hand, performance for convenience - less cache locality on fetch for ordering. On the other hand, insertion performance should be comparable. And main gain: much simpler implementation (but probably I just fear to implement RHH :-) it looks to me a bit complex).
Note, that it is hard to discuss load factor tradeoff: load factor of indices hash affects memory consumption less compared to unordered openaddressing, cause indices are almost always smaller than Entry. Load factor of Entries array could be made grainer easy: size chain could be 4,6,8,12,16,32,48...2^n,2^n+2^(n+1) . So, if no deletion performed, load factor is in range 0.66-1.0 . For comparison RRH with maximum load factor 0.9 has real range of 0.45-0.9 . So, what you loose cause of indices hash, you gain with load factor of Entries array.

How often Crystal Hash is used with huge Structs as a key or value?

Feel free to Rails-like hash usage. A majority of hashes has Symbols and Strings as keys (one int32 or pointer), and String or other References as values.
There is only two known exceptions - Unicode support and compiler internals - with big values.

I would like a memory efficiency of 80-85% on any hash table implementation crystal chooses. Of course if we go the index map approach that includes the insertion-order array too so it shouldn't be too hard even if the actual hash table has a load factor of maybe 50%.

There is only two known exceptions - Unicode support and compiler internals - with big values.

I have checked compiler internals and haven't found any big entries -
Hash(String, TypeDeclarationWithLocation) has 3 pointers+1 bool, others are less. Maybe i've missed something though.

@konovod thanks, I was wrong. Majority of  structs have 128bit or less.

@funny-falcon Anyway we need no backward compatibility at all. Feel free to change contracts.

Let's please keep one Hash, ordered, just like now. Later we can (or not) other hashes more suited for other purposes, like without order, etc. I'd like Hash to be the most convenient and mostly fast (but if it's not the fastest that's ok).
The compiler uses lots of hashes, though I believe they are generally small. We could probably use the compiler for a real-world benchmark.

By the way, Crystal is an apps programming language, not a system language. It's meant to do high-level apps. So sure, you can try to write a kernel or write shared libraries, but at least I won't give that much support because it's not the language's goal.

@funny-falcon I think that implementing hash like this would be best and in-line with how to_s is implemented:
class object
  def hash
    hasher = SomeHash.new
    hash(hasher)
    hasher.finalize
  end

  def hash(hasher)
    hasher << object_id
  end
end

class MyClass
  property foo : Foo
  property bar : Bar
  def hash(hasher)
    hasher << @foo
    hasher << @bar
  end
end

btw @bew @akzhan what did you dislike about @asterite's comment?

@RX14 I just missed smile by phone :)

I would prefer to keep it ordered unless there is a large memory or speed
hit for doing so.
On Jun 14, 2017 1:46 AM, "Akzhan Abdulin"<EMAIL_ADDRESS>wrote:

@sdogruyol https://github.com/sdogruyol, @eliasjp
https://github.com/eliasjp, @elorest https://github.com/elorest and
others: can You help to choose Hash implementation? There is good
question to be cleared:

current Hash implementation preserves order of insertion. Should new
default implementation do the same?

Please read discussion (there are many questions).
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/crystal-lang/crystal/issues/4557#issuecomment-308348811,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAHmpN22O6AbP1fmnuU99BioQOryqtdVks5sD4_KgaJpZM4N4Jpe
.

@RX14 It's a bit off-topic, it was about " Crystal is an apps programming language, not a system language ... I won't give that much support because it's not the language's goal.". I understand the comment in the context of this issue, but I dislike it in a general context, because I'd like to do system programming stuff with crystal and doing it while it's not "supported" isn't the ideal situation I think.
But let's not talk about that here, it's not where I wanted my reaction to go. (if it makes sense)

In a desire to estimate performance potential i've implemented unordered hash table with open addressing, powers of two and quadratic probing, but performance was almost same as current implementation (like x1.3 faster on very big tables with 10k elements). Then i implemented RHH (with backward shift deleting), but... performance is still almost the same. In some situations it is worse than default, in some - slightly faster on big hashes. Well, I've tried.   Code is here, relatively messy as it was just an experiment (and a funny one).
I've also found someone else attempt to implement better hash - https://github.com/yxhuvud/crystal-hash, it is also showing worse results than default implementation. Haven't checked it deeply though, only compiled and run benchmark.
My conclusion is that making Hash faster isn't as easy as it may seem, good luck @funny-falcon or anyone else who is going to try it.

@konovod Firstly, thanks for links. Subject to read. But:

Powers of two need another hash algorithm (https://github.com/crystal-lang/crystal/issues/4557#issuecomment-308260625).
Crystal need another hash too in terms of security.

Hashing algorithm is additional problem. I've measured Hash(Int32, Int32) to don't deal with hashing quirks. Changing hash algorithm will slow down things more, even if it would be fast.

I've measured Hash(Int32, Int32) to don't deal with hashing quirks. Changing hash algorithm will slow down things more, even if it would be fast.

That is unavoidable evel :-( I will try to special-case hashing Int32 key, but still it will be slower than no hashing.

I've also found someone else attempt to implement better hash - https://github.com/yxhuvud/crystal-hash,

Thanks for link. It will short my study of Crystal's idioms.

Code is here,

And for this.

"I've also found someone else attempt to implement better hash - https://github.com/yxhuvud/crystal-hash, it is also showing worse results than default implementation. "
@konovod well, it seems to be worse for small hashes. It is multiple times faster for big hashes. Also it should be noticed that I haven't really done proper measurement of how fast or slow it is, so any claims of speed or slowness may be wrong. I also haven't benchmarked at all, so it may very well contain stupid mistakes.
@funny-falcon Note that it is almost a line for line translation of the ruby implementation (except for the index compaction), with some ideomatic changes to allow for usage of structs and objects (hopefully where appropriate). But as I havn't benchmarked, some of that may be quite misguided.
Another note is that it changes the hash contract slightly compared to the current crystal implementation. It does an additional check that the hashes are the same before comparing equality when doing lookup. That is probably a good thing, but it should be noted.

@yxhuvud
I've tried to benchmak you table with my (pretty arbitrary) microbenchmark (consisting of adding N random values, searching N random values, deleting N/2 random values, adding N/3 values, looking up 3*N values), and found that performance is  same as default hash (slightly worse on hashes with N=100, same with N=10 and N=10000). Maybe that means that my benchmark is broken and measures something else, as it's seems to have same results for any hash implementation, lol. I have an idea of better test, will try it soon.

@yxhuvud

is almost a line for line translation ... with some ideomatic changes

almost, but not exact :-( . When the performance is taken into account, there is no room for idiomatic changes :-( . Entries should be mutable structs, and filled by key and value separately.
Any way, it could happen that I can not do better :-) Time will tell.

Is there a way to make conditional compilation based on generic argument?
class HashTbl(K, V)
  # pseudo code, not compiles now
  if K == UInt32
   struct Entry(K, V)
    property key : K
    property val : V
   end
  else
   struct Entry(K, V)
    property key : K
    property hash : UInt32
    property val : V
   end
  end
end

Ok, got it:
class HashTbl(K, V)
  KEY = K # need to reassign to access in macro
  {% if KEY == UInt32 %}
   struct Entry(K, V)
    property key : K
    property val : V
   end
  {% else %}
   struct Entry(K, V)
    property key : K
    property hash : UInt32
    property val : V
   end
  {% end %}
end

Could it be noted in documentation?
Or why generic argument is not accessible as constant in a macro?

ah, no, it doesn't work: KEY is assigned at first invocation, and not per Generic instance :-( It quite limits Generics usability.

More: struct Entry is also could not be overriden :-(

Looks like You need two different structs. Use overrides to set type specific behavior.
Also You can use if @key.is_a?(UInt32) inside methods to express compile-time checks.

@funny-falcon please don't optimize (by using macros at least) specifically for UInt32 it'll make the code a lot more complex and unreadable for little gain. I'm pretty sure @asterite would want it removed.

@RX14 Hash is very base of all stdlib  and must be implemented in terms of performance and security.
Something.hash must be readable, Hash interface must be clean too, but Hash internals - no, it's not the goal.

There is no profit from optimizing Hash for UInt32. There are also Int32, Enum, Pointer(on 32-bit archs) and other types with size <=4.

@konovod you are right. If you tell, how to reliably recognize them, it would be great. Slice already does something similar in new :
unless T <= Int::Primitive || T <= Float::Primitive

Is it enough?

@funny-falcon, if you are going to unsafe_as(UInt32) them, i think it could be all value types with size <=4, so T < Value && sizeof(T) <= 4.

What contract exists for Hash iteration? Could Hash mutate during iteration?
Ruby Hash allows updating and deletion, but not insertion of new keys:
$ ruby -e 'a = {1=> 1, 2=> 2}; a.each{|k,v| a[k]=v+1}; p a'
{1=>2, 2=>3}
$ ruby -e 'a = {1=> 1, 2=> 2}; a.each{|k,v| a.delete(k&1)}; p a'
{2=>2}
$ ruby -e 'a = {1=> 1, 2=> 2}; a.each{|k,v| a[3]=v+1}; p a'
-e:1:in `block in <main>': can't add a new key into hash during iteration (RuntimeError)
        from -e:1:in `each'
        from -e:1:in `<main>'

Crystal Hash makes in-time deletion in reject!, but delayed deletion in delete_if (why?), and has no any tests nor documentation on explicit modifications during iteration.
More, it doesn't explicitly forbid adding new keys during iteration:
$ bin/crystal eval 'a = {1=> 1, 2=> 2}; a.each{|k,v| a[k]=v+1}; pp a'
Using compiled compiler at `.build/crystal'
a # => {1 => 2, 2 => 3}
$ bin/crystal eval 'a = {1=> 1, 2=> 2}; a.each{|k,v| a.delete(k) if k==1}; pp a'
Using compiled compiler at `.build/crystal'
a # => {2 => 2}
$ bin/crystal eval 'a = {1=> 1, 2=> 2}; a.each{|k,v| a[3]=v+1}; pp a'
Using compiled compiler at `.build/crystal'
a # => {1 => 1, 2 => 2, 3 => 4}
$ # next lines makes infinite loop
$ bin/crystal eval 'a = {1=> 1, 2=> 2}; a.each{|k,v| a[k+1]=v+1}; pp a'
Using compiled compiler at `.build/crystal'
^C$ ^C

Why I am asking:
If no addition during iteration allowed, then memory for index hash and entries could be realloc-ated. But otherwise it should be newly allocated (to safely iterate over old arrays, and relying on GC for deallocation).

New key during iteration could be forbidden just as documentation.
It is quite easy to check during iteration, than no rehashing occured due to new keys (as Ruby's st_tables does now).
But check for concurrent iteration during each insert (like Ruby's Hash does) could be inefficient a bit. Though, it will be friendlier for unexperienced programmers.

Found during investigation, that 64bit Crystal has serious issue for serious programming: https://github.com/crystal-lang/crystal/issues/4589
I will just ignore presence of this issue at the moment.

just links to #5104 and #5146 (i prefer second, of course).

Now it;s time to develop new hashes!

Hmm, maybe I should get mine to compile again. Not because I think it is very fast (I don't - f-f simply have more experience in building hash tables), but because it gives something to benchmark against.

Here is a draft: https://gist.github.com/funny-falcon/084f7ebc159401dfd56bf33241a2ebd6
It certainly contains unknown bugs, but it could be benchmarked with simple scenarios.

@funny-falcon it should be better in form of [WIP]Pull Request.

https://github.com/crystal-lang/crystal/pull/5256

Looks like Hash should be adopted for two different sizes (small and others).

It would be so cool if someone would retake this issue. Maybe copying in parts the algorithm used by Ruby. Or I think just anything that uses open addressing while retaining insertion order somehow should be a good start and a good improvement because it will avoid having to allocate memory on each hash insertion.

I'm experimenting with this a bit. I did something really simple (open addressing, linear probing, two arrays: one for indices, another for ordered entries). So far the results are promising, it works faster than the existing Hash and allocates less memory (and should also have better cache locality). I still need to take care of deleting hash entries in a smart way, though...


Add snippets for conditions

When editing a YAML, user should be able to generate snippets for conditions using vscode code completion. The snippets are

Condition type
Condition reference in a taskref e.g.

    - name: list-pipeline-repo-files-1
      taskRef:
        name: list-pipeline-repo-files
      conditions:
        - conditionRef: "verify-no-file-exists-without-resource"
          params:
            - name: "path"
              value: "$(params.path)"

Resolved with https://github.com/redhat-developer/vscode-tekton/pull/245


Dev to Main

feat: add rating endpoints
feat: add scheduled job
test: add tests for rating generation
chore: add endpoints to readme
chore: code clean up and refactor

@nitzel fatigue gets saved as a string since its a json object but it can be null until a new player gets rated
Since the cron time gets pulled from the environment file you cant use the @cron directive its using the cron schedule registry  in the module init.


Add Dutch podcast Beginnen met Bitcoin

Hope the list allows for non-English content? If not, close this.
I added my Bitcoin-only podcast.

ACK

I know some Dutch bitcoin journalists + core dev for example who might vouch for me. Would that work?

That would be great - please ask them to either comment on this thread or they could tweet and you could post the link here.
Foreign language section sounds like a very sensible idea. We will add that then when you can do the above we will add your podcast.
Thanks,
6102

For what it's worth I can vouch for @AbelLykens. His podcast is Bitcoin only, definitely no shitcoin support/discussions.

I used translate on their website and it was all bitcoin-only. Unable to verify if the actual podcast content is bitcoin-only.

@AbelLykens please could you ask one of the Dutch bitcoin journalists + core devs you mentioned to comment or DM @bitcoinonly_ on twitter

The guys over at bitcoinmagazine.nl (one of the larger news sites) confirmed it's bitcoin only: https://twitter.com/BitcoinMagNL/status/1307986366115065857 .

Also Aaron van Wirdum (bitcoinmagazine.com) has confirmed.

Please can you change this pull to add the podcast to the Dutch Section. Thank you.

Continue in  #313 please ;)


RIOcoin stuck at 143707

My ROIcoin wallet, updated to v<IP_ADDRESS> (64-bit), stuck at 134707, despite the 'fix" posted on their website.
Using Win 7, SP1
Any ideas?
Thanks

just resync from scratch it only takes 30-40 mins or so.
stop the wallet,
backup your wallet.data, delete all other files in %APPDATA%/Roaming/ROicoin except your wallet.dat , then restart wallet.

Thanks,
The fix on the ROIcoin website seems to have took. Wallet topped up to
what was indicated in the block explorer.
If it acts up again, I will try your advice..
Peter
On Sat, 14 Jul 2018 01:41:53 -0600, Gary Hobson<EMAIL_ADDRESS>wrote:

just resync from scratch it only takes 30-40 mins or so.
stop the wallet,
backup your wallet.data, delete all other files in
%APPDATA%/Roaming/ROicoin except your wallet.dat , then restart wallet.

--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/


Add Google Tag Manager (GTM)

PR description
Have added Google Tag Manager on the site
Link checker
The links will be checked by the build agent automatically once you create or update your PR.
You can use the following command to check the broken links locally.
docker run --rm -it --network=host --name=linkchecker ghcr.io/linkchecker/linkchecker --check-extern --no-warnings http://<IP_ADDRESS>:4000/

I am reverting this due to: https://www.quora.com/Do-I-need-to-remove-analytics-because-of-tag-manager and https://www.quora.com/Do-I-need-both-Google-Analytics-and-Tag-Manager-code-snippets


add dates for comparison images

replaces 'xxx' and 'xxx' with actual months/years, based on the dates of images listed in the GLIMS submission

Cheers!

Also just corrected a small typo in RGI19
I'm off for today! Thanks


Why  EmitDefaults default by false?

Recently I met a question when I'm using micro-v2 with micro api .(version：go-micro/v2 v2.3.0)
Firstly, I has two service, micro service and micro api;
protoc create .proto file has json tag with 'omitempty' by default;

Like,
Code    string               protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"       //http code

when I curl micro service interface,  response has no code if code = 0,
and remove omitempty tag, response still no code ;
I make EmitDefaults = true in "/micro/go-micro/v2@v2.3.0/server/grpc/codec.go:24", code is ok when it is zero
using jsonpb package,

var jsonpbMarshaler = &jsonpb.Marshaler{
EnumsAsInts:  false,
EmitDefaults: false,
OrigName:     true,
}

my question is why EmitDefaults default by false?  Why not true with  EmitDefaults?
help me please~

good

@asim, is this issue still relevant?

Closing due to inactivity.


using lean options in a service with a subdocument model doesn't seem to work

Steps to reproduce
When setting lean at true on service creation the subdocuments still seem to be mongoose object, am I missing something or is this intended behavior ?
Expected behavior
const Schema = require('mongoose') = mongoose.Schema
const barSchema = new Schema({
data: {type: Number, default: 0}
})

const schema = new Schema({
   foo: {type: barSchema}
})

Using lean: true on service().
query results should be an object with a foo object
Actual behavior
Logging Object.keys(result) outputs:
['$isSingleNested',
  '$__',
  'isNew',
  'errors',
  '_doc',
  '$__original_save',
  'save',
  '_pres',
  '_posts',
  '$__original_validate',
  'validate',
  '$__original_remove',
  'remove',
  '$parent' ]

System configuration
Module versions (especially the part that's not working):
feathers-mongoose version 3.5.3
NodeJS version:
7.4.0
Operating System:
Linux

Hi @quentin-sommer, can you please show your service creation, I think that's where the confusion lies, that's the point where you set the lean option. Should look something like this:
var service = feathersMongoose({
  Model: model,
  lean: true,
});

Hi, thanks for replying so quickly!
I'm creating the service exactly this way:
const options = {
    Model: schema,
    lean: true,
  }
feathersMongoose(options)

Found the problem, query was coming from a direct mongoose call (service.Model.findById()) that is not controlled by feathers!

@quentin-sommer  I've done that before ;)