text:
[Bug]: Pinecone Upsert infinite loop

Bug Description
When persisting to Pinecone, all of the vectors will be upserted, then the process starts over infinitely.
The execution never passes this line:
index = VectorStoreIndex.from_documents(documents, storage_context=storage_context)
Version
0.10.13.post1
Steps to Reproduce
This seems to occur with the following code. When using a SimpleDirectoryReader the issue doesn't occur.
`import os
from llama_index.core import VectorStoreIndex, StorageContext, SimpleDirectoryReader, load_index_from_storage
from llama_index.readers.database import DatabaseReader
from llama_index.vector_stores.pinecone import PineconeVectorStore
from pinecone import Pinecone, ServerlessSpec
from dotenv import load_dotenv
def execute():
load_dotenv()
# Index
PERSIST_DIR = './storage'
index_name = 'llama-index-learning6'
pc = Pinecone(api_key=os.getenv('PINECONE_API_KEY'))
if not os.path.exists(PERSIST_DIR):
    # Load initial data
    print("Connecting to the database...")
    reader = DatabaseReader(
        scheme='postgresql',
        host='localhost',
        port='6005',
        user='pgadmin',
        password='pgpass!',
        dbname='ACME'
    )
    query = "SELECT * FROM \"Account\" AS A INNER JOIN \"MonthlyStats\" AS MS ON A.\"AccountId\" = MS.\"AccountId\""
    print("Load data...")
    documents = reader.load_data(query)
    print("Persisting...")
    pc_index = pc.create_index(
        name=index_name,
        dimension=1536,
        metric='cosine',
        spec=ServerlessSpec(cloud='aws', region='us-west-2')
    )
    print("Storing vector store...")
    pc_vector_store = PineconeVectorStore(pinecone_index=pc_index, index_name=index_name)
    print("Storing storage context...")
    storage_context = StorageContext.from_defaults(vector_store=pc_vector_store)
    print("Storing index...")
    os.mkdir(PERSIST_DIR)
    index = VectorStoreIndex.from_documents(documents, storage_context=storage_context)
else:
    print("Connecting to Pinecone...")
    pc_index = pc.Index(index_name=index_name,host='https://llama-index-learning6-y5whppu.svc.apw5-4e34-81fa.pinecone.io')
    print("Loading vector store...")
    pc_vector_store = PineconeVectorStore(pinecone_index=pc_index, index_name=index_name)
    print("Loading storage context...")
    storage_context = StorageContext.from_defaults(vector_store=pc_vector_store)
    print("Loading index...")
    index = VectorStoreIndex.from_vector_store(storage_context=storage_context, vector_store=pc_vector_store)

# Query
print("Querying...")
query_engine = index.as_query_engine()
prompt = "What was  Eco Aviation Inc.'s revenue in December 2015?"
response = query_engine.query(prompt)
print(response)

if name == 'main':
execute()`
I'm using a very simple data structure:
`create table "Account"
(
"AccountId" uuid not null
constraint "PK_Account"
primary key,
"Name"      text not null
);
create table "MonthlyStats"
(
"MonthlyStatsId" uuid    not null
constraint "PK_MonthlyStats"
primary key,
"AccountId"      uuid    not null
constraint "FK_MonthlyStats_Account_AccountId"
references "Account"
on delete cascade,
"Year"           integer not null,
"Month"          integer not null,
"Revenue"        real    not null,
"Expenses"       real    not null,
"Profit"         real    not null
);
`
Relevant Logs/Tracbacks
No response

I don't really see how this can loop. Looking at the source code, there's a single upsert call and then it returns.
Are you sure it's not just a ton of data? By default, the index batches data inserts into batches of 2048 (to avoid memory and API issues)
If you call print(len(documents)) or even calculate the number of nodes, I suspect it will be a lot
from llama_index.core import Settings

nodes = Settings.node_parser(documents)
print(len(documents))
print(len(nodes))

Ahh you're right, that's exactly what's happening. 11,808 documents\nodes. Thank you for the help 🙏

authors: benlabbeus logan-markewich


text:
[Question]: Does agent creation reset memory?

Question Validation

[X] I have searched both the documentation and discord for an answer.

Question
I am trying to dynamically create agents with memory based on user key on session creation from storage. But it clears the memory of the past conversation as soon as the agent is created? Any way to avoid that?
def initialize_agent(user_key):
        chat_store= SimpleChatStore.from_persist_path("./chat_store.json")
        memory = ChatMemoryBuffer.from_defaults(
        token_limit=3000,
        chat_store=chat_store,
        chat_store_key=user_key,
        )
        print('before agent',memory) # for debugging: past memory available here
        agent = ReActAgent.from_tools(my_tool_list, llm=llm, memory=memory, verbose=True)
        agent.update_prompts({"agent_worker:system_prompt": react_system_prompt})
        agent.reset()
        print('after agent',memory) # for debugging: past memory erased here

@risos8200 agent.reset() resets the memory -- any reason to run this when the agent was just created?

@logan-markewich It gives this error if I don't
'dict' object has no attribute 'content'

source: gharchive/issue

license: MIT

license_type: permissive

license_source: github-api


text:
[Bug]: llama_index.llms.ollama httpx.HTTPStatusError: Server error '500 Internal Privoxy Error' for url 'http://localhost:11434/api/chat'

Bug Description
I am building my local question-answering system using LlamaIndex, where LLM is deployed through Ollama. Initially, it worked fine, but when I started the global Privoxy, there were issues with LLM based on Ollama. However, deploying the local embedding model based on HuggingFaceEmbedding did not encounter any problems. The specific error message is: httpx.HTTPStatusError: Server error '500 Internal Privoxy Error' for url 'http://localhost:11434/api/chat' For more information, check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500
Version
0.10.55
Steps to Reproduce
embed_args = {'model_name': './bce-embedding-base_v1', 'max_length': 512, 'embed_batch_size': 32, 'device': 'cuda'}
embed_model = HuggingFaceEmbedding(**embed_args)        #token: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
reranker_model = SentenceTransformerRerank(
top_n = 5,
model = "./bce-reranker-base_v1",
device='cuda'
)
llm = Ollama(model="qwen2:latest", request_timeout=60.0)
Settings.embed_model=embed_model
Settings.llm = llm
db = chromadb.PersistentClient(path="./ChromaDB")
chroma_collection = db.get_or_create_collection("MyDocuments")
vector_store = ChromaVectorStore(chroma_collection=chroma_collection)
index = VectorStoreIndex.from_vector_store(vector_store)
vector_retriever = VectorIndexRetriever(index=index, similarity_top_k=5)
response_synthesizer = get_response_synthesizer(
# llm=llm,
response_mode="tree_summarize",
streaming=True
)
query_engine = RetrieverQueryEngine(
retriever=vector_retriever,
response_synthesizer=response_synthesizer,
node_postprocessors=[reranker_model],
)
query_engine.query(“XX”).print_response_stream()
Relevant Logs/Tracbacks
No response

Is that the correct url? If you are using some proxy, you might need to update the base url

Is that the correct Ollama url? If you are using some proxy, you might need to update the base url

Thank you so much!
When I don't use a Proxy, everything works fine, and Ollama is running in the background. So, should I use its absolute path now?

Not sure what you mean by absolute path? I just meant that if you are using a proxy, http://localhost:11434 might not be the correct URL anymore right?
You can modify this like llm = Ollama(..., base_url="http://localhost:11434")

Not sure what you mean by absolute path? I just meant that if you are using a proxy, http://localhost:11434 might not be the correct URL anymore right?
You can modify this like llm = Ollama(..., base_url="http://localhost:11434")

You are right, after enabling the global proxy, http://localhost:11434 is not the correct one. However, I am not sure now where the correct port of Ollama is.


text:
[Bug]:issue with redis vector store index?

Bug Description
set_global_service_context(service_context = service_context)
vector_store=RedisVectorStore(index_name=folderpath[i],index_prefix="llama_index",redis_url=configdata["REDIS_URL"],overwrite=False)
loaded_index = VectorStoreIndex.from_vector_store(vector_store,service_context=service_context)
query_engine = loaded_index.as_query_engine(similarity_top_k= 3,streaming=True)
response = query_engine.query(input_txt)
https://gpt-index.readthedocs.io/en/latest/examples/vector_stores/RedisIndexDemo.html
Version
0.8.44
Steps to Reproduce
Retriever = loading_index.as_retriever()
Retriever.retrieve(input_txt)
Relevant Logs/Tracbacks
No response

What is the issue you are having?

Exception Details : Exception occured in single document query in redis. details :Property vector_score not loaded nor in schema

Thank you so much for the support with the above snippet.
Now i have a query that what is is meant by vector_score exactly and do we have any specific or default value for that Vector_Score parameter while loading or extracting  the data to the redis?

authors: ashokrayapati logan-markewich


text:
Support static sites via S3 + Cloudfront

Description
This commit includes changes to allow opta users to deploy and manage static sites via S3 + Cloudfront. This is done via the following changes:

There's a new cloudfront-distribution module which is linked to an S3 bucket whose files it will be serving/caching. Comes with a default/404 page (which can be overwritten at the user's pleasure) and optionally support SSL/official site domains.
The S3 module now supports a files field with which users can automatically upload files to the bucket with (also detects changes)
Both modules can work WITHOUT the aws-base module, but that's still recommended because the base module sets up the logging bucket, which is needed for security audits (but again, not necessary for ease of use)
I updated my OS and along the why I did a pipenv update causing the pipfile.lock to update with later versions of the packages used but I did not change the version restrictions (so nothing should break) and I'm now afraid of reverting it lol.

Points 1-3 have extension documentation so pls take a look at that too.
Safety checklist

[X] This change is backwards compatible and safe to apply by existing users
[X] This change will NOT lead to data loss
[X] This change will NOT lead to downtime who already has an env/service setup

How has this change been tested, beside unit tests?
Created a whole new env for cloudfront, and applied/modified multiple times to check SSL, setting domain, file upload, URL correctness and so on. Everything is working as expected.

Here is an example of a customer request for cloudfront without s3: https://run-x.atlassian.net/browse/RUNX-519. We should design this module such that it can one day be used to support this non-s3 use case as well (no need to support it right now).

source: gharchive/pull-request

authors: juandiegopalomino legalosLOTR

repo: run-x/opta


text:
Add parallel ci build for javascript

Start running eslint as part of CI.

Ok, this should be ready for review now.

repo: runconduit/conduit


text:
Namespaced keywords messes up rewritten forms

Something like
(::foo/bar)

Becomes (if for example doing "wrap" in vector)
([:::foo/bar])

Fixed

repo: rundis/rewrite-cljs

license: mit

license_source: bigquery


text:
GPS and Having Second ESP32 for Sensors.

I have enjoyed working with you on this project and having your assistance in making this leg of SpotMicro project a reality. I enjoy the challenge of trying to troubleshoot issues. As I was reading the goal you have outlined, a idea dawned on me about have GPS integrations could be done with the use of ESP32 LoRA  modules for sensor management. They have GPS, ESP32, LoRA for future development (a small mesh of Leika could communicate) . If you need assistance, I can make CAD models for addition ESP32 modules. Cheers Mate

I'm currently looking on how to connect a neo 6m GPS module to the ESP32 cam, but as most pins are already is in use it poses some issues. Would you like to have the ESP32 Lora module be the main controller or talk to another? I have through about splitting the firmware #34 to make the robots more customizable.

An ESP32 LoRA module for controller would be cool. I could look into having the work together and navigate, If it's easier and simpler for you.

I think creating a platform to build off would be great. Controlling the robot via the ESP32 have it future capabilities for controlled Pi  control having an ARM and LIDAR would be nice.

authors: Ian-cmd-ops runeharlyk


text:
! Password Change broken in 6.6.7.1

We have a 6.6.7.1 shop with the plugin activated and observe that when administration users head to "Your profile" > "Password" and enter a new password, the field input is cleared immediately via the blur() event - on both the "new password" and "confirm password" fields. When they then click "Save", Shopware doesn't see any changes so nothing happens, other than an endless progress indicator on the "Save" button. This occurs regardless of whether or not this specific user has 2FA enabled, the plugin just has to be active in the shop.
Without the plugin activated, in the background, Shopware first sends a POST requests to retrieve a Bearer token, then a GET request to "/api/_info/config-me", then a PATCH to "/api/user/" with the newly set password. With the plugin activated, that PATCH request does not occur since Shopware doesn't see any changes made.
We also observe that with the plugin active, non-administration users can get an error message saying that the "user:update" permission is missing (even with all "user" permissions granted to their role) when they try to change their password. This may be connected or a separate issue.
The unability to change one's administration password is a crititcal bug that should be addressed ASAP.

While this is an open-source project, you are welcome to contribute by a PR.

Hi, 6.0.1 was just released which should fix this issue.

authors: janobi runelaenen tinect


text:
Bump bank-xp-value to v1.2.2

Adds the following items:

Silver ore (smithing)
Mithril ore (smithing)
Bird's eggs (prayer - 3 types)
Ashes (prayer - 5 types: fiendish, vile, malicious, abyssal, infernal)
Raw cod (cooking)
Raw bass (cooking)
Broad arrowheads (fletching)

Closing due to failing CI and inactivity.

authors: Nightfirecat dseeler

repo: runelite/plugin-hub


text:
Combat Timer

A plugin that starts a timer whenever a certain sound effect plays. You can make the overlay panel flash after a certain amount of seconds. The overlay panel disappears after you get too far away or perform a certain action.

This plugin seems to go against: https://secure.runescape.com/m=news/third-party-client-guidelines?oldschool=1
Specifically:

Indicates the time where a boss mechanic may start or end

Adds additional visual or audio indicators of a boss mechanic except in cases where this is a manually triggered external helper.

This plugin seems to go against: https://secure.runescape.com/m=news/third-party-client-guidelines?oldschool=1
Specifically:

Indicates the time where a boss mechanic may start or end

Adds additional visual or audio indicators of a boss mechanic except in cases where this is a manually triggered external helper.

Should I remove the default config? All this plugin is doing is starting a timer and flashing a box

I made this because it was tedious to manually start and stop a timer, this doesn't have any logic specific to any boss mechanics
Do I need to remove parts of this to be compliant with the rules?

The issue is that it is trivial to go to a boss, find the sound ID attached to certain mechanics, and set up delayed alerts/triggers for when the action needs to be reacted to. This was recently addressed for the Watchdog plugin in #5829 by disabling such alerts in boss regions/raids. If the same change is applied here, that would make it allowable in my eyes.

Closing based on guidelines.

authors: Bram91 JohnMichaelRouth Nightfirecat raiyni


text:
Running runelite with gpu cause stutter every few steps.

Describe the bug
When I play the game running off of GPU my character stops moving for an instant every few steps.
To Reproduce
Steps to reproduce the behavior:

Run game through gpu or turn on gpu mode.
Walk anywhere

Expected behavior
When not on GPU the game doesn't have this stutter walking.
Environment (please complete the following information):

OS: Windows 10
RuneLite version: 1.5.42
Launcher version: not sure how to check

Additional context
Using NVIDIA GeForce GTX 1060

Reopen this issue if the problem persists in the latest release of RuneLite or join us at https://runelite.net/discord in the #support channel so we can fix this issue for you.

Reopen this issue if the problem persists in the latest release of RuneLite or join us at https://runelite.net/discord in the #support channel so we can fix this issue for you.

repo: runelite/runelite


text:
[Suggestion] Ability to adjust metronome plugin sound level.

What the title says, a lot of the time i find i am not able to hear the metronome over game sounds and it would be really helpful to be able to adjust it.
Thank you!

Duplicate of #10347


text:
Fishing type overlay displaying twice for some fishing spots

I have no idea what is causing it, but on my screen the Fishing type overlay displays twice:

A client restart will probably fix it, but this shouldn't happen in the first place. My settings:

Duplicate of #1392


text:
music: re-add slider granularity

Requires !123

Commented on previous threads, would be amazing to get this back! Helps out miles with inferno.

authors: Seppobb abextm


text:
Update VarPlayer list of MUSIC_TRACKS_UNLOCKED

Adding values to VarPlayer with the varpIds of the bitfields for music track unlocks that have been added between 2020 and 2022.

Just to explain why I'm posting this PR out of the blue, I'm currently working on a plugin that requires knowing how many total music tracks the player has unlocked. In order to find that out, I needed to figure out the IDs for the VarPlayer values for the more recent music tracks. I managed to find all 4 of them, and I figured I'd do this in case anyone else needs these values as well.

These varps are there from when we used to have a music unlock plugin. But they are all unused now, so we can probably just remove them instead.

Whatever happened to that plugin? Also, I'm using those for the plugin I'm working on, so I'd prefer to leave them in if it isn't too much trouble. But if it's important that they be removed, I'll just copy the varpIds to live in my plugin instead.

Jagex added it as a vanilla feature, so we removed that plugin. See #10571

Whatever happened to that plugin? Also, I'm using those for the plugin I'm working on, so I'd prefer to leave them in if it isn't too much trouble. But if it's important that they be removed, I'll just copy the varpIds to live in my plugin instead.

You can just use getVarpValue(int) in your plugin and not have to edit the core VarPlayer.

Updated to remove all of the apparently unused music unlocked varp values. I will be using their values on the plugin I'm working on personally though. Also, out of curiosity, is there any form of documentation listing what various different varps/varbits represent? If so, should I add the values I found myself to it? If not, that's fine too, I'm just trying to be of help.

That varies from entry to entry. In the past, we were much less strict about new entries being well-documented, nowadays we like it to be clear just from looking at the entry how it works since there's so much variance from var to var. You can see toward the bottom of this file some of the entries have detailed javadoc blocks, despite a lot of the earlier ones not. If you're particularly interested, we wouldn't mind more javadoc to cover existing entries, but that should be a separate commit/PR from this one.

Ok, cool. So if I were to write detailed comments explaining how the music unlocked bitfields work, would it be okay to add them in? Again, probably a separate commit/PR though. Also, sure I can look into improving the documentation on some of the other varps.

Do you mean as documentation on some other vars or...? We still want these music unlocked var definitions removed as we don't use them. Adding documentation to them wouldn't be sufficient reason for us to keep those definitions.

Documentation on some other vars. Sorry for the poor wording.

If it's relevant to them, sure

authors: Adam- Nightfirecat claytondetke


text:
Show username when chat input is locked (by WASDCamera plugin).

Proposed Changes:
Prefix the Please press Enter to chat... message with the username when the chat input is disabled.
There has been much discussion on whether to add a toggle to this. This toggle would most likely be best suited to be part of a 'Streamer/Privacy Mode' plugin. For now that username is included similar to how it was included when the Press [Enter] to chat... functionality was added back in the day (around 2009-10).
Assets:
Expected result:

Checkstyle: Indents must use tabs, not spaces

@forsco Comments have been addressed. You know what they say about old habits. 😓

I am not sure if this even needs a toggle

I personally like having it hidden. I could see the option going somewhere else though.

I can do one of two things that I think might work:

Remove the option and make the username prefix default.
Default the show username value to true

I'd prefer the first option as there is less code to maintain.

It would go in the streamer mode plugin.

Yeah idk what is best, how was it in rs2?

The username was always included from what I remember. Circa 2010?

@raiyni Perfect! In that case, I'll leave it toggleable for now.
@deathbeam Are you okay with leaving it as disabled by default?

The issue is that the chat input locking functionality is bundled with the WASDCamera plugin. Maybe then it makes sense instead to modify the WASDCamera plugin to instead be a subset of a HotKey plugin, there you could map the keys to the functionality. E.g WASD for Camera, 0-9 for bank tabs, etc.
This decouples the chat input locking from the camera and leaves the ability to extend keys presses. If we then introduce a streamer plugin, the username should be prefixed by default and only hidden when the streamer plugin is enabled.
cc: @deathbeam

Sorry! Didn't realize this was here.

authors: Adam- Karn deathbeam forsco raiyni widget-


text:
Timers: Make antipoison/venom timers work off the poison varplayer

This commit allows the poison timer to be much more accurate as it
receives periodic updates from the server, and covers edge cases where
poison may be delayed or cured from sources besides potion clicks.
(banked potion drinks, HP orb "Cure" menu option, etc.)
This commit removes the initialDelay field from GameTimer as the field
was used only to chain antivenom timers into their follow-up antipoison
timers.
Fixes #1471
Fixes #10724

So what is the point of this change? You could've just improved Timers plugin then, instead of adding duplicate functionality

I could've (and probably should've) added it to the timers plugin, but the poison plugin is nothing more than a timer plugin right now as well. The fact there was a poison plugin which already did timers made me add it onto that. The fact it's duplicate came from me forgetting to remove the old antipoison timers.
Other question would be why is the poison plugin a seperate plugin when it's basically a timer plugin?

Timers contains all potion timers, so this should be there

What about just deleting the poison plugin (really why does that even exist?) and then moving this all to timers

Updated PR title to actually explain what it does, and added the timers to the timers plugin again.

Why does this show ~18 seconds for antivenom when the wiki says that antivenom lasts 1 minute?

Wiki is wrong, or antidote++ also protects against venom. Drinking antivenom sets the poison var to 41, and antidote++ to 40.
The randomness comes from the fact the poison cycle stays the same, think of it like stat boosts: if you boost your stats with only 5 seconds left on the counter they'll tick down after those 5 seconds. Antipoison works the same way.

I don't understand your reply. If I drink an anti venom it will show anti-venom timer for maybe a short time (0 seconds, or 3 seconds, or more) and then after that it will change to anti poison for ~11 minutes or so.

If you drink it while poisoned/venomed/with antipoison active there'll be up to 30 ticks less protection than if you drink it without having anything active. This also applies to normal antipoison and poison/venom itself. Sometimes if you get venomed it'll hit almost instantly, that's the same thing happening here.
After the (up to) 18 seconds of antivenom it should change into 12 minutes of antipoison (poison value of -40, like antidote++). I don't really think there's a way to test venom protection other than to ask a jmod for confirmation.

This maybe clarifies what I mean. Quick change to display ticks instead of seconds. As you can see drinking antipoison doesn't change when the poison value changes.

this would likely solve #1471

I've rebased this PR and updated the original post to reflect the (multiple) issues it will close if merged.

This still needs rebase. It may be better if you just open your own PR and take it since the original author is no longer with us.

authors: Adam- Alexsuperfly Lucwousin Nightfirecat deathbeam jbaker5011


text:
Provide easy way to shell into the finch vm

What is the problem you're trying to solve?.
Currently, it is not user friendly and a big hassle to shell into the finch vm. I would like to be able to easily shell into the finch vm for debugging and customization instead of having to run LIMA_HOME=/Applications/Finch/lima/data /Applications/Finch/lima/bin/limactl shell finch
Describe the feature you'd like
It would be good to have something like finch shell or finch vm shell to access the underlying finch vm.

Thanks for initializing this issue. There were some discussions about this in different places before and the issue is a good place to close on it.
I prefer not to enable Finch command to log into shell by default. Here is my thought process. The viewpoints below are just my personal recommendation and are not the official statements of Finch yet. Looking forward to gettting community input and hopefully we can settle down some of these principles at some point.
What should the scope of default Finch command (or even any external interfaces) be?
The default Finch commands is ideally a set that is specifically for Finch users to learn and use. It is targetted to accurately meet the scope of what users are expected to use (the scope is defined by user stories). Being smaller than the expected scope will not satisfy user's need. Being larger than the expected scope could increase the unnecessary learning cost of users to learn the things they should not use, and even mislead the approach of using Finch.
Is finch shell part of user stories?
For Finch or other similar container development tools, the user stories are always across the container development operations, such as build, run, push, pull. MacOS doesn't have the container primitive such as namespace and cgroup which causes the user stories can't be directly satisfied in macOS, so Finch macOS integrates the virtualization layer to make the user stories work in macOS. The virtualization layer is the technique behind the scene to support the user stories instead of part of user stories.finch shell will be a command only serving virtualization layer so it is not part of user stories.
Should users use finch shell in normal cases?
No. What users are expected to learn and use are just user stories and they don't have to invest time on learning any technique behind the scene. Additionally, logging into VM exposes to users the risk of corrupting Finch by manual operations. If users use Finch in a strict development environment where Finch should be always healthy to support their development, this risk can be significant.
Should users use finch shell when running into issues?
It depends. Today users sometimes need to log into VM to collect logs and send to support. However running into issues should be treated as rare cases, and may be assumed less and less as the project becomes mature. In addition, there is an ongoing PR to add support bundle, which may give the ability of collecting logs without logging into VM.
Should developers use finch shell?
Yes. Developers are different with users. Developers may be interested in any technologies behind the scene, and have to use them when they develop Finch. LIMA_HOME=/Applications/Finch/lima/data /Applications/Finch/lima/bin/limactl shell finch is not user friendly but is more acceptable to developers.
Instead of default, can we introduce finch shell in the non-default developer mode?
It may be a good idea at some point. However, adding developer mode for single command finch shell only may not be deserved now. Switching to developer mode and running finch shell may not be easier than LIMA_HOME=/Applications/Finch/lima/data /Applications/Finch/lima/bin/limactl shell finch. When we have multiple use cases to support developer mode, it could deserve the effort.

Been thinking about this a bit with https://github.com/runfinch/finch/issues/369, and wanted to add some of my thoughts here:

Is finch shell part of user stories?
For Finch or other similar container development tools, the user stories are always across the container development operations, such as build, run, push, pull. MacOS doesn't have the container primitive such as namespace and cgroup which causes the user stories can't be directly satisfied in macOS, so Finch macOS integrates the virtualization layer to make the user stories work in macOS.

There is already some precedent for Finch breaking this rule -- all of the finch vm subcommands deal with the virtualization layer, not with the container development layer. I agree with you that these are sort of a "necessary evil" in the CLI design, but adding finch vm shell doesn't break the scope of the finch command any more than those commands, imo.
Another option that would allow us to keep the scope of the finch command small while making it easier to shell to the VM would be to package another binary with Finch that manages this scenario, e.g. finch-shell.

Should users use finch shell in normal cases?
No. What users are expected to learn and use are just user stories and they don't have to invest time on learning any technique behind the scene.

I think this is a good argument that finch shell or similar shouldn't be required in the normal use case, but I don't think it's a good argument that we shouldn't make it easier. Making something easier to do doesn't guarantee that people will do it all the time, it simply removes some of the legwork required when a user needs to shell to the VM.
One example of a scenario that currently requires shelling to the VM is increasing vm.max_map_count for Elasticsearch. It's possible to build a different way to change this configuration, but we can't anticipate every use case a user might have. Making shelling to the VM more accessible seems like a good way to help unblock users that need unique setups while we work on a more native solution.

Developers are different with users.

I see your point with the distinction between Finch users and developers, but I think it's also important to keep in mind that Finch users are all developers as well. Obviously not in the sense that you intended -- that they develop actively on Finch -- but in the sense that they are working on solving hard technical problems. We can do our best to provide an opinionated set of tools, but users will run into scenarios that require tools that we haven't anticipated. Making access to the VM easier empowers users to solve these problems with Finch.

authors: ningziwen sam-berning weikequ

repo: runfinch/finch


text:
Feature: with DataQuality

[x] I have added tests to tests to cover my changes.
[ ] I have updated docs/, if necessary.
[ ] I have updated the README.md, if necessary.

Demonstration
from dataquality import DataQuality
with DataQuality(trainer, train_df=train_df):
    trainer.train()
#or
with DataQuality(model, train_df=train_df):
    model.fit(train_df)

Provide additional context.
Provide as much relevant context as you like.

As far as naming convention goes i like DataQuality but I'm not yet convinced on train_df. This is for users to pass in? train_df / val_df etc feel like var names we use internally but not what we'd expect a user to pass in to a context manager.

As far as naming convention goes i like DataQuality but I'm not yet convinced on train_df. This is for users to pass in? train_df / val_df etc feel like var names we use internally but not what we'd expect a user to pass in to a context manager.

I agree, alternatives:
train_dataset
test_dataset
validation_dataset

Codecov Report

Merging #498 (9847507) into main (d000ee3) will increase coverage by 0.28%.
The diff coverage is 98.15%.

@@            Coverage Diff             @@
##             main     #498      +/-   ##
==========================================
+ Coverage   91.64%   91.93%   +0.28%
==========================================
  Files         121      126       +5
  Lines        9351     9672     +321
==========================================
+ Hits         8570     8892     +322
+ Misses        781      780       -1

Impacted Files
Coverage Δ

dataquality/integrations/transformers_trainer.py
94.23% <ø> (+5.76%)
:arrow_up:

dataquality/utils/imports.py
66.66% <80.95%> (+16.66%)
:arrow_up:

tests/start/test_start_pt.py
98.56% <98.56%> (ø)

dataquality/schemas/model.py
100.00% <100.00%> (ø)

tests/start/test_start_hf.py
100.00% <100.00%> (ø)

tests/start/test_start_keras.py
100.00% <100.00%> (ø)

tests/start/test_start_spacy.py
100.00% <100.00%> (ø)

tests/test_utils/spacy_integration.py
84.37% <100.00%> (+0.24%)
:arrow_up:

dataquality/utils/torch.py
80.46% <0.00%> (+0.46%)
:arrow_up:

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

what is the difference between these two?
@franz101
from dataquality import DataQuality
with DataQuality(trainer, train_df=train_df):
    trainer.train()
#or
with DataQuality(model, train_df=train_df):
    model.fit(train_df)

One is keras, one is huggingface
Or what do you mean?

The dataset is already passed in the trainer instance.

One is keras, one is huggingface Or what do you mean?

@franz101 okay so just showing that it works across frameworks. Cool!

spacy integration on hold as it is too wonky as of right now. @Ben-Epstein

repo: rungalileo/dataquality


text:
Add guest forwards

I know literally just submitted a PR about half an hour ago, but I need guest forwards, too.
I have a server on my host and I need to interact with it on runtime.

Nevermind, I misread guest fowards, let me fix that.

I feel stupid. Nevermind, forget this.

@ArielAbreu you should be able to connect to host directly using ip 192.168.76.2 (in user networking mode this is the default ip qemu uses for the host). runtime gets this ip as a router address during DHCP configuration.

authors: ArielAbreu iefserge

repo: runtimejs/runtime-tools


text:
Upgrade runner to macos-13

Related: https://github.com/runtimeverification/k/issues/3472

@ehildenb, please adjust required checks.

This one contains the same changes: https://github.com/runtimeverification/evm-semantics/pull/1903
And would be better to get merged. So wait on merging this one until we know that one will fail.

repo: runtimeverification/evm-semantics


text:
Add Indie UI

Site URL
https://ui.indie-starter.dev
Description of the above provided site
A collection of beautifully designed UI components built with Tailwind CSS.
Category
Frontend
Sub Category
Ui libraries
Checklist

[X] I have checked the existing issues
[X] I have read the Contributing Guidelines
[ ] I am willing to work on this issue (optional)

I am willing to work on this issue.

authors: Ali-Hussein-dev Jay-Karia

repo: rupali-codes/LinksHub


text:
[Add] Hubdev

Site URL
https://www.hubdev.tools/
Description of the above provided site
Resources for programmers!
✓ Free APIs, Databases and Hosting
✓ Programming logic challenges
✓ The best courses in Spanish
✓ Icons, fonts, illustrations
Category
Open Source
Sub Category
projects
Checklist

[X] I have checked the existing issues
[X] I have read the Contributing Guidelines
[ ] I am willing to work on this issue (optional)

Assign this to me.


text:
opencv 3.0.0-p9

fixes for native cmake android toolchain (>= 3.7.1)

Released: https://github.com/ruslo/hunter/releases/tag/v0.17.18

authors: headupinclouds ruslo

repo: ruslo/hunter


text:
Bump version to 0.26.1

More than half of the year has passed since the last release and we already have 24 PRs merged, which indicates the clear need to get the new version out.
I have only doubts about https://github.com/rust-bitcoin/rust-bitcoin/pull/572 which is marked as API version breaking change, so if you see this to be critical we will need to mark this release as 0.27 - but pls let's do not postpone this release further.

Thank you for your patience!!

authors: apoelstra dr-orlovsky

repo: rust-bitcoin/rust-bitcoin


text:
Newsletter 27 - October 2021

Newsletter 27: October 2021
tags: newsletter
Editors: @17cupsofcoffee, @ozkriff, and @AngelOnFira
Another month has gone by, so it's time to put together the Rust Gamedev newsletter for October!
If you want to help writing the newsletter:

Please read CONTRIBUTING.md.
Grab some of the "🆓 free" sections by leaving a comment like "I'd like to work on {section_name_1} and {section_name_2}".

The links in brackets (like "1, 2, 3") are suggestions of links to include in the section. Feel free to add more!
Mentions in brackets (like "🆓 free (@ozkriff?)") are just a suggestion of who could pick the work up - it's not an obligation, and other people are welcome to take those sections.
Extra sections not listed in the plan are welcomed - just leave a comment and open a PR!

Write a short overview:

Use provided links as a starting point.
Try to maintain a consistent style with the rest of the newsletter and run markdownlint (lint errors will fail the CI build).
Insert line breaks (softbreak) at 80 chars, please.
Leave a comment or DM me on Discord if you have any issues.

Send a PR to the source branch (example: #336)

Mention this issue in your PR's description to link it all together.

As with the last few newsletters, we're trying to delegate the writing workload where we can - to quote @AngelOnFira from a few months ago:

We're also going to be transitioning to having authors or volunteers write about their own content, rather than the editing team doing it all at the end 💯 This means if you want to see your work in the newsletter, you have to write it yourself! If you're not able to write about your work, feel free to comment and I can assign it 🆓 free. We're working on taking some of the load off the editing team where we can with this. Best to keep this sustainable!
Also, we want to make sure contributing to the newsletter feels open to anyone who wants to write a section about their project. If you have anything you can write about, just add a comment to this issue and I'll add it to the todo list 😄

Current Schedule
The soft deadline for all section PRs is the 6th of November. PRs will usually be accepted as long as they are ready before the newsletter's release, but the earlier the better :)

⚠ The most important formatting/style rules from CONTRIBUTING.md:

Only one image (<300kb) or GIF (<2.5mb) before the text, with an optional caption and mandatory alt text for accessibility.
All the rendered text should be under 1000 characters (including spaces and punctuation) and under 6 paragraphs (without any subsections, etc).
No bold/italic/etc formatting - only links and one plain list without nesting per section (multiple lists are allowed if your project consists of multiple parts that aren't independent enough for their own sections).
Third-person perspective.
80 characters per line and no other markdownlint warnings on CI.

Please use these templates as a starting point:
Games/apps/libraries:
### [Game name]

![alt text](img)
_optional image label_

[Game name] ([GitHub], [Discord], [Twitter]) by [@nickname]
is... {short project description in one sentence}.

{An overview of the recent updates with links to more details}.

_Discussions: [/r/rust_gamedev](link), [Twitter](link), [etc](link)_

[Game name]: http://example.com

Articles/blog posts/videos/etc:
### [Article name]

![alt text](img)
_optional image label_

[@nickname] published an [article] about...
{overview what the resource is about}.

_Discussions: [/r/rust_gamedev](link), [Twiter](link), [etc](link)_

[Article name]: http://example.com

Current Structure & Status
Below is a list of our current planned structure for the newsletter, and the status of each PR (which we'll try to keep updated).
This is not an exhastive list - if you have your own project that you want to write about, just make a comment on this issue and open a PR!

[x] Rust GameDev Meetup - ✔ done by @AngelOnFira
[x] Rust Graphics Meetup (already covered last month)
[ ] Game Updates

[x] Soldank (1, 2, 3) - ✔ done by @smokku
[x] Veloren (1) - ✔ done by @AngelOnFira
[ ] Bitgun (1, 2) - 🆓 free (@darthdeus?)
[x] Way of Rhea (1) - ✔ done by @MasonRemaley
[ ] Nox Futura (1) - 🆓 free (@thebracket?)
[ ] Hydrofoil Generation Sailing (1, 2, 3) - 🆓 free (@kunos?)
[ ] mk48.io (1, 2) - 🆓 free (@finnbear?)
[x] The Process (1) - ✔ done by @setzer22
[ ] Recall Singularity (1, 2) - 🆓 free (@tom-leys?)
[ ] Fish Fight and Fish Fight Prequel (1, 2) - 🆓 free (@not-fl3?)
[x] Berry Run (1) - ✔ done by @Bombfuse
[x] Lonely Star (1) - ✔ done by @17cupsofcoffee
[x] LD49 LibraCity (1, 2) - ✔ done by @djeedai
[ ] LD49 Unbalanced Brawl (1, 2) - 🆓 free (@yopox?)
[x] LD49 Me And My Unicycle (1, 2) - ✔ done by @NiklasEi
[ ] LD49 Chevalchemy (1, 2, 3) - 🆓 free (@xlambein?)
[ ] LD49 Proc Spider (1, 2) -  🆓 free (@darthdeus?)
[x] LD49 Chaos Theory (1, 2) - ✔ done by @necauqua
[x] LD49 Crunda (1) - ✔ done by @danslocombe

[ ] Learning Material Updates

[ ] Herbert's Talk at GameDev Mini-Symposium (1) - 🆓 free (@thebracket?)
[ ] TanTan's video about voxel game (1) -  🆓 free (@TanTanDev?)

[ ] Engine Updates

[ ] Amethyst (1, 2, 3) - 🆓 free (@erlend-sh?)
[x] godot-rust (1) - ✔ done by @Bromeon
[ ] rg3d 0.23 (1) - 🆓 free (@mrDIMAS?)
[ ] macroquad - 🆓 free (@not-fl3)
[ ] VNgine (1, 2) - 🆓 free (@porky11?)
[ ] Blue Engine (1, 2 - 🆓 free (@ElhamAryanpur?)
[ ] GGEZ 0.6.1 and good-web-game 0.3.0 (1) covered last month
[x] Tetra v0.6.6 - ✔ done by @17cupsofcoffee
[x] All is Cubes (1, 2) - ✔ done by @kpreid

[ ] Tooling Updates

[ ] Fearless-NES (1, 2) - 🆓 free (@TomasKralCZ?)

[ ] Library Updates

[x] wgpu (1, 2) - ✔ done by @kvark
[x] bevy_kira_audio v0.6 (1) - ✔ done by @NiklasEi
[x] bevy_pen_tool v0.2 (1) - ✔ done by @eliotbo
[x] bevy_verlet (1) - ✔ done by @ManevilleF
[x] bevy_atmosphere (1, 2) - ✔ done by @JonahPlusPlus
[ ] Crevice 0.8 (1) - 🆓 free (@LPGhatguy?)
[x] hecs-rapier (1) - ✔ done by @smokku
[ ] SPV (1) - 🆓 free (@AlbinSjoegren?)
[ ] rend3 v0.2 - 🆓 free (@cwfitzgerald?)
[ ] Thunderdome v0.5 (1) - 🆓 free (@LPGhatguy?)
[x] Sparsey 0.4 (1) - ✔ done by @LechintanTudor
[ ] egui 0.15 (1) - 🆓 free (@emilk?)
[ ] puffin-egui/puffin-viewer (1) - 🆓 free (@emilk?)
[ ] Shalrath (1) - 🆓 free (@Shfty?)

[ ] Meeting Minutes - 🚧 WIP by @AngelOnFira
[ ] Discussions

[ ] Async Game Server Design (1) - 🆓 free (@ozkriff @17cupsofcoffee?)

Final steps:

[ ] Final review - by everyone
[ ] Publish - by @17cupsofcoffee
[ ] Post on /r/rust, /r/rust_gamedev, /r/gamedev, URLO, twitter.com/rust_gamedev - by @17cupsofcoffee & @ozkriff
[ ] Add comment links - by @17cupsofcoffee
[ ] Add a draft of the 28th newsletter - by @17cupsofcoffee

Hey!
I could write something about SPV, also please refer to new instead of 1.
/Albin Sjögren

We should be able to remove the section about the Rust Graphics Meetup, since although it happened in October, we already discussed it in the September newsletter (unless @kvark has any new plans :+1:)

I'll make an entry about https://github.com/Vrixyz/graph_nav

@AngelOnFira Ah, I added it because I thought it was a monthly thing - if not, I'll remove it :)

heya, I'd love to write about Blue Engine, however not much changed this month due to exams. next month and a half is expected to be spent towards exam too. Thanks!

Will take the Hydrofoil Generation Sailing part.

I'll pick up rend3

Picking LD49 LibraCity via #822, thanks!

Since you asked me, I wrote a section on All is Cubes in #823.

I'll introduce bevy_pen_tool.
Eliot
On Sun, Oct 31, 2021 at 12:19 PM Joe Clay @.***> wrote:

Newsletter 27: October 2021 tags: newsletter
Editors: @17cupsofcoffee https://github.com/17cupsofcoffee, @ozkriff
https://github.com/ozkriff, and @AngelOnFira
https://github.com/AngelOnFira
Another month has gone by, so it's time to put together the Rust Gamedev
newsletter for October!
If you want to help writing the newsletter:

Please read CONTRIBUTING.md
https://github.com/rust-gamedev/rust-gamedev.github.io/blob/source/CONTRIBUTING.md.
Grab some of the "🆓 free" sections by leaving a comment like "I'd
like to work on {section_name_1} and {section_name_2}".

The links in brackets (like "1, 2, 3") are suggestions of links
to include in the section. Feel free to add more!
Mentions in brackets (like "🆓 free @.***
https://github.com/ozkriff?)") are just a suggestion of who could
pick the work up - it's not an obligation, and other people are welcome to
take those sections.
Extra sections not listed in the plan are welcomed - just leave a
comment and open a PR!

Write a short overview:

Use provided links as a starting point.
Try to maintain a consistent style with the rest of the
newsletter and run markdownlint (lint errors will fail the CI build).
Insert line breaks (softbreak
https://spec.commonmark.org/0.29/#soft-line-breaks) at 80 chars,
please.
Leave a comment or DM me on Discord if you have any issues.

Send a PR to the source branch (example: #336
https://github.com/rust-gamedev/rust-gamedev.github.io/pull/336)

Mention this issue in your PR's description to link it all
together.

As with the last few newsletters, we're trying to delegate the writing
workload where we can - to quote @AngelOnFira
https://github.com/AngelOnFira from a few months ago:
We're also going to be transitioning to having authors or volunteers write
about their own content, rather than the editing team doing it all at the
end 💯 This means if you want to see your work in the newsletter, you
have to write it yourself! If you're not able to write about your work,
feel free to comment and I can assign it 🆓 free. We're working on taking
some of the load off the editing team where we can with this. Best to keep
this sustainable!
Also, we want to make sure contributing to the newsletter feels open to
anyone who wants to write a section about their project. If you have
anything you can write about, just add a comment to this issue and I'll add
it to the todo list 😄

Current Schedule
The soft deadline for all section PRs is the 6th of November. PRs will
usually be accepted as long as they are ready before the newsletter's
release, but the earlier the better :)
⚠ The most important formatting/style rules from CONTRIBUTING.md
https://github.com/rust-gamedev/rust-gamedev.github.io/blob/source/CONTRIBUTING.md
:

Only one image (<300kb) or GIF (<2.5mb) before the text, with an
optional caption and mandatory alt text for accessibility.
All the rendered text should be under 1000 characters (including
spaces and punctuation) and under 6 paragraphs (without any subsections,
etc).
No bold/italic/etc formatting - only links and one plain list
without nesting per section (multiple lists are allowed if your project
consists of multiple parts that aren't independent enough for their own
sections).
Third-person perspective.
80 characters per line and no other markdownlint warnings on CI.

Please use these templates as a starting point:
Games/apps/libraries:
Game name

optional image label
Game name ([GitHub], [Discord], [Twitter]) by @.***
is... {short project description in one sentence}.
{An overview of the recent updates with links to more details}.
Discussions: /r/rust_gamedev, Twitter, etc
Articles/blog posts/videos/etc:
Article name

optional image label
@.*** published an [article] about...
{overview what the resource is about}.
Discussions: /r/rust_gamedev, Twiter, etc
Current Structure & Status
Below is a list of our current planned structure for the newsletter, and
the status of each PR (which we'll try to keep updated).
This is not an exhastive list - if you have your own project that you
want to write about, just make a comment on this issue and open a PR!

Rust GameDev Meetup - 🚧 WIP by @AngelOnFira
https://github.com/AngelOnFira
Rust Graphics Meetup - 🚧 WIP by @AngelOnFira
https://github.com/AngelOnFira
Game Updates

Soldank (1 https://github.com/smokku/soldank, 2
https://abadcafe.wordpress.com/, 3 https://twitter.com/smokkku)
🆓 free @.*** https://github.com/smokku?)
Veloren (1 https://veloren.net/devblog-139/) - 🚧 WIP by
AngelOnFira
Bitgun (1 https://twitter.com/LogLogGames, 2
https://store.steampowered.com/app/1673940/BITGUN/) - 🆓 free (
@darthdeus https://github.com/darthdeus?)
Way of Rhea (1 https://twitter.com/AnthropicSt) - 🆓 free (
@MasonRemaley https://github.com/MasonRemaley?)
Nox Futura (1 https://reddit.com/user/thebracket) - 🆓 free (
@thebracket https://github.com/thebracket?)
Hydrofoil Generation Sailing (1 https://twitter.com/KunosStefano,
2
https://reddit.com/r/rust_gamedev/comments/qdmeya/hydrofoil_generation_sailing_a_indie_made,
3
https://reddit.com/r/rust_gamedev/comments/qdmeya/hydrofoil_generation_sailing)
🆓 free @.*** https://github.com/kunos?)
mk48.io (1 https://mk48.io, 2
https://github.com/SoftbearStudios/mk48) - 🆓 free @.***
https://github.com/finnbear?)
The Process (1
https://twitter.com/PlayTheProcess/status/1445098719326658562) -
🆓 free @.*** https://github.com/setzer22?)
Recall Singularity (1 https://youtube.com/watch?v=nsjnCZslNdg, 2
https://twitter.com/RecallSingular1) - 🆓 free @.***
https://github.com/tom-leys?)
Fish Fight and Fish Fight Prequel (1
https://twitter.com/fedor_games/status/1447697111001227270, 2
https://github.com/not-fl3/FishFight-The-Prequel/tree/main/fishsteam)
🆓 free @.*** https://github.com/not-fl3?)
Berry Run (1 https://bombfuse.itch.io/berry-run) - 🆓 free (
@Bombfuse https://github.com/Bombfuse?)
Lonely Star (1
https://twitter.com/17cupsofcoffee/status/1452711549802618887) -
🚧 WIP by @17cupsofcoffee https://github.com/17cupsofcoffee
LD49 LibraCity (1 https://github.com/djeedai/libracity, 2
https://twitter.com/djeedai/status/1444784232006623236) - 🆓
free @.*** https://github.com/djeedai?)
LD49 Unbalanced Brawl (1
https://ldjam.com/events/ludum-dare/49/unbalanced-brawl, 2
https://github.com/yopox/LD49) - 🆓 free @.***
https://github.com/yopox?)
LD49 Me And My Unicycle (1
https://niklme.itch.io/me-and-my-unicycle, 2
https://twitter.com/nikl_me/status/1445385965619515403) - 🆓
free @.*** https://github.com/NiklasEi?)
LD49 Chevalchemy (1
https://ldjam.com/events/ludum-dare/49/chevalchemy-a-hoof-of-concept,
2 https://github.com/xlambein/ldjam49, 3
https://twitter.com/xlambein/status/1445005189115748352) - 🆓
free @.*** https://github.com/xlambein?)
LD49 Proc Spider (1
https://ldjam.com/events/ludum-dare/49/procedural-spider, 2
https://github.com/darthdeus/procedural-spider) - 🆓 free (
@darthdeus https://github.com/darthdeus?)
LD49 Chaos Theory (1
https://ldjam.com/events/ludum-dare/49/chaos-theory-1, 2
https://github.com/necauqua/chaos-theory) - 🆓 free @.***
https://github.com/necauqua?)
LD49 Crunda (1 https://ldjam.com/events/ludum-dare/49/crunda) -
🆓 free @.*** https://github.com/danslocombe?)

Learning Material Updates

Herbert's Talk at GameDev Mini-Symposium (1
https://twitter.com/pragprog/status/1435256552567422979) - 🆓
free @.*** https://github.com/thebracket?)
TanTan's video about voxel game (1
https://youtube.com/watch?v=G-IuH6R-yD8) - 🆓 free @.***
https://github.com/TanTanDev?)

Engine Updates

Amethyst (1 https://amethyst.rs/posts/amethyst--starting-fresh,
2 https://twitter.com/AmethystEngine/status/1444671106389057536, 3
https://www.reddit.com/r/rust/comments/q0imyn/amethyst_starting_fresh_we_are_officially_halting)
🆓 free @.*** https://github.com/erlend-sh?)
godot-rust (1 https://www.youtube.com/watch?v=dTD-_pQ9Vl4) - 🆓
free @.*** https://github.com/Bromeon?)
rg3d 0.23 (1
https://reddit.com/r/rust/comments/pnhbe4/media_rg3d_023_game_engine_custom_shaders)
🆓 free @.*** https://github.com/mrDIMAS?)
macroquad - 🆓 free @.*** https://github.com/not-fl3)
VNgine (1
https://reddit.com/r/rust/comments/pyvcen/introducing_the_first_prototype_of_vngine,
2 https://gitlab.com/porky11/vngine-rs) - 🆓 free @.***
https://github.com/porky11?)
Blue Engine (1 https://github.com/ElhamAryanpur/BlueEngine, 2
https://reddit.com/r/rust_gamedev/comments/q4rana/introducing_blue_engine
🆓 free @.*** https://github.com/ElhamAryanpur?)
GGEZ 0.6.1 and good-web-game 0.3.0 (1
https://psteinhaus.github.io/ggez/web-examples/) - 🆓 free (
@PSteinhaus https://github.com/PSteinhaus?)
Tetra v0.6.6 - 🚧 WIP by @17cupsofcoffee
https://github.com/17cupsofcoffee
All is Cubes (1 https://crates.io/crates/all-is-cubes, 2
https://github.com/kpreid/all-is-cubes/blob/main/CHANGELOG.md) -
🆓 free @.*** https://github.com/kpreid?)

Tooling Updates

Fearless-NES (1
https://reddit.com/r/rust/comments/q875p0/fearlessnes_a_nes_emulator_in_rust_using_egui,
2 https://github.com/TomasKralCZ/Fearless-NES) - 🆓 free (
@TomasKralCZ https://github.com/TomasKralCZ?)

Library Updates

wgpu (1
https://reddit.com/r/rust_gamedev/comments/q3lfew/wgpu011, 2
https://reddit.com/r/rust/comments/q8e1ex/processing_shaders_talk_from_rust_la_meetup)
🆓 free @.*** https://github.com/kvark?)
bevy_kira_audio v0.6 (1
https://twitter.com/nikl_me/status/1443965740512591872) - 🆓
free @.*** https://github.com/NiklasEi?)
bevy_pen_tool v0.2 (1 https://github.com/eliotbo/bevy_pen_tool)
🆓 free @.*** https://github.com/eliotbo?)
bevy_verlet (1
https://twitter.com/ManevilleF/status/1449332859886518275) - 🆓
free @.*** https://github.com/ManevilleF?)
bevy_atmosphere (1 https://crates.io/crates/bevy_atmosphere, 2
https://discord.com/channels/691052431525675048/692648638823923732/901601725071360020)
🆓 free @.*** https://github.com/JonahPlusPlus?)
Crevice 0.8 (1
https://github.com/LPGhatguy/crevice/blob/main/CHANGELOG.md#080---2021-10-26)
🆓 free @.*** https://github.com/LPGhatguy?)
hecs-rapier (1 https://github.com/smokku/hecs_rapier) - 🆓
free @.*** https://github.com/smokku?)
SPV (1 https://github.com/AlbinSjoegren/SPV/tree/0.0.6) - 🆓
free @.*** https://github.com/AlbinSjoegren?)
rend3 v0.2 - 🆓 free @.***
https://github.com/cwfitzgerald?)
Thunderdome v0.5 (1
https://github.com/LPGhatguy/thunderdome/blob/main/CHANGELOG.md)
🆓 free @.*** https://github.com/LPGhatguy?)
Sparsey 0.4 (1
https://reddit.com/r/rust/comments/q9xix2/sparsey_04) - 🆓 free
@.*** https://github.com/LechintanTudor?)
egui 0.15 (1
https://reddit.com/r/rust/comments/qeue67/announcing_egui_015) -
🆓 free @.*** https://github.com/emilk?)
puffin-egui/puffin-viewer (1
https://twitter.com/ernerfeldt/status/1447961523696066564) - 🆓
free @.*** https://github.com/emilk?)
Shalrath (1
https://reddit.com/r/rust/comments/qeumo7/announcing_shalrath_a_quake_map_parsing_lib)
🆓 free @.*** https://github.com/Shfty?)

Meeting Minutes - 🚧 WIP by @AngelOnFira
https://github.com/AngelOnFira
Discussions

Async Game Server Design (1
https://users.rust-lang.org/t/tokio-tungstenite-async-game-server-design/65996)
🆓 free @.*** https://github.com/ozkriff @17cupsofcoffee
https://github.com/17cupsofcoffee?)

Final steps:

Final review - by everyone
Publish - by @17cupsofcoffee https://github.com/17cupsofcoffee
Post on /r/rust, /r/rust_gamedev, /r/gamedev, URLO,
twitter.com/rust_gamedev - by @17cupsofcoffee
https://github.com/17cupsofcoffee & @ozkriff
https://github.com/ozkriff
Add comment links - by @17cupsofcoffee
https://github.com/17cupsofcoffee
Add a draft of the 28th newsletter - by @17cupsofcoffee
https://github.com/17cupsofcoffee

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/rust-gamedev/rust-gamedev.github.io/issues/818, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ABPECGFSEJNBXZSAJTLE23DUJVUANANCNFSM5HCOP4FQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Picking Soldank and hecs_rapier

I'll take The Process

Hey I can write about Crunda :)

Just sending out a ping in case you haven't seen this issue yet! (Sorry if you're already working on it :sweat_smile:) This month's "soft" deadline is the 6th :calendar:
@darthdeus @thebracket @tom-leys @not-fl3 @Bombfuse @NiklasEi @yopox @xlambein @necauqua @TanTanDev @tomaskralcz @ManevilleF @jonahplusplus @LPGhatguy @LechintanTudor @emilk @Shfty

I'll take Sparsey :)

keep getting busy and forgetting, but I can throw a small snippet together for Berry Run tonight

I'd like to add a section for the game I've been working on, PaddlePunks.

ggez 0.6.1 and gwg 0.3.0 were already covered in last months issue, so they can be removed from the list

Last call for sections! I will be posting the final PR later today.

I will pick up Amethyst, the gamedev mini symposium, and the meeting minutes/discussions section.

The release PR is now up at #846 - everyone is invited to review 🙂
Aiming to publish the newsletter later this evening all being well.

authors: 17cupsofcoffee AlbinSjoegren AngelOnFira Bombfuse ElhamAryanpur LechintanTudor PSteinhaus Vrixyz cwfitzgerald danslocombe djeedai eliotbo halvnykterist kpreid kunos setzer22 smokku


text:
newsletter-thRustEngine update broken video link

#/677
updated broken video link - thRustEngine "custom map" video demo link -  replacement updated video is: https://vimeo.com/572436649

Tnx! Fixed directly in https://github.com/rust-gamedev/rust-gamedev.github.io/pull/717


text:
Struggling with accessing the same widget from multiple connect calls

I'm struggling with the following code I've written
		let libraryview : Viewport = builder.get_object("libraryview").unwrap();
		let scroll : ScrolledWindow = builder.get_object("mainscroll").unwrap();

		librarylbl.connect_button_press_event(move |_,_,| {
			scroll.remove(&libraryview);
			Inhibit(true)
		});

		newrecipelbl.connect_button_press_event(move|_,_| {
			scroll.remove(&libraryview);
		        Inhibit(true)
		 });

Which results in a borrow error for scroll and libraryview, whereas it looks like you could do something similar in rgtk, using &mut || { } closures as far as I can tell?

You have to use Rc<RefCell<T>> objects to modify objects within the closures. For example:
let libraryview : Rc<RefCell<Viewport>> = Rc::new(RefCell::new(builder.get_object("libraryview").unwrap()));
let scroll : Rc<RefCell<ScrolledWindow>> = Rc::new(RefCell::new(builder.get_object("mainscroll").unwrap()));

let b_libraryview = libraryview.clone();
let b_libraryview2 = libraryview.clone();
let b_scroll = scroll.clone();
let b_scroll2 = scroll.clone();
librarylbl.connect_button_press_event(move |_,_,| {
    (*b_scroll.borrow_mut()).remove(b_libraryview.borrow());
    Inhibit(true)
});

newrecipelbl.connect_button_press_event(move|_,_| {
    (*b_scroll2.borrow_mut()).remove(b_libraryview2.borrow());
    Inhibit(true)
});

(Or nearby).

@GuillaumeGomez  You don't have to do that for GObject descendants (particularly, any widgets) because they already are a kind of Rc<RefCell<X>> underneath. You just need to clone them.
I'd also look into cloning the closure as well. This might work:
        let libraryview : Viewport = builder.get_object("libraryview").unwrap();
        let scroll : ScrolledWindow = builder.get_object("mainscroll").unwrap();

        let env = (scroll.clone(), library_view.clone());
        let handler = move |_,_,| {
            let (ref scroll, ref library_view) = env;
            scroll.remove(libraryview);
            Inhibit(true)
        };

        librarylbl.connect_button_press_event(handler.clone());
        newrecipelbl.connect_button_press_event(handler);

I didn't pay attention. Thanks for correcting me @gkoz.

When trying to clone the closure I got
 error: type `[closure src/hymntoninkasi.rs:92:22: 95:4]` does not implement any method in scope named `clone`

I'm wondering, is cloning each widget the only way to do this?  As i'm going to use a number of
.connect_button_press_event's with closures accessing the same widgets, so the code will get quite verbose, if I have to clone them all.

When trying to clone the closure I got

I was mistaken then, you can't clone a closure :(
You could make a wrapper around Fn that would hide some boilerplate, but implementing Fn is impossible in stable Rust.

I'm wondering, is cloning each widget the only way to do this?

Currently closures have unbounded ('static) lifetimes so they need to own the variables they close over -- that's why you need to move the variables into them and can't capture references. The lack of a clone variant of move might be a shortcoming in Rust that needs to be addressed.
One can always try to design some clever macros ;)

Here's a macro that will clone the variables for you: http://is.gd/StvyKV
It'd be nice to integrate the macro with closures a little more but I'm not sure how to do that yet.

Cheers! Really appreciate your help

I'm just having a little problem with this macro,
I can do https://play.rust-lang.org/?gist=7ad1859c73cd05a19e2c&version=stable which works fine.
But the following
macro_rules! clone {
	($($n:ident),+ ; $b:expr) => (
        	{
			$(let $n = $n.clone();)+
        	    	$b
        	}
    	);
}

librarylbl.connect_button_press_event(clone!(scroll,libraryview,newrecipeview;move |_,_|{
	Inhibit(true)
}));

newrecipelbl.connect_button_press_event(clone!(scroll,libraryview,newrecipeview;move |_,_|{
	Inhibit(true)
}));

Results in:
Global is external, but doesn't have external or weak linkage!
i8 (%closure.6*, i128, %"17.gdk::events::EventButton"*)* @_ZN7example4main12closure.4542E
invalid linkage type for function declaration
i8 (%closure.6*, i128, %"17.gdk::events::EventButton"*)* @_ZN7example4main12closure.4542E
Global is external, but doesn't have external or weak linkage!
i8 (%closure.7*, i128, %"17.gdk::events::EventButton"*)* @_ZN7example4main12closure.4559E
invalid linkage type for function declaration
i8 (%closure.7*, i128, %"17.gdk::events::EventButton"*)* @_ZN7example4main12closure.4559E
LLVM ERROR: Broken module found, compilation aborted!

Interesting! Does Rust nightly produce the same error?

Just about to try that :)

This is slightly off-topic but I'm just wondering I'm doing the following:
		librarylbl.connect_button_press_event(clone!(scroll,libraryview,newrecipeview;move |_,_|{
			scroll.remove(&libraryview);
			scroll.remove(&newrecipeview);
			libraryview.reparent(&scroll);
			Inhibit(true)
		}));

		newrecipelbl.connect_button_press_event(clone!(scroll,libraryview,newrecipeview;move |_,_|{
			scroll.remove(&libraryview);
			scroll.remove(&newrecipeview);
			newrecipeview.reparent(&scroll);
			Inhibit(true)
		}));

So when I click the 'newrecipelbl' I get the newrecipeview shown in the GtkScrolledWindow, and when I click 'librarylbl'  I get the libraryview shown in the GtkScrolledWindow.
This works, if i click each of these buttons once, but as soon as I press one more than once.
I get
(hymntoninkasi:27267): Gtk-CRITICAL **: gtk_widget_reparent: assertion 'priv->parent != NULL' failed

Which seems odd, as I've removed the elements from the scrolled window, as far as I can tell.

I'll probably need a full working sample to play with.

I managed to solve it through re-parenting the view port to an offscreen window :)
               librarylbl.connect_button_press_event(clone!(scroll,libraryview,newrecipeview;move |_,_|{
			newrecipeview.reparent(&rwindow);
			libraryview.reparent(&scroll);
			Inhibit(true)
		}));

		newrecipelbl.connect_button_press_event(clone!(scroll,libraryview,newrecipeview;move |_,_|{
			libraryview.reparent(&lwindow);
			newrecipeview.reparent(&scroll);
			Inhibit(true)
		}));

authors: GuillaumeGomez anfractuosity gkoz

repo: rust-gnome/gtk


text:
Toolchain is reportedly not installed, even though it very much is

I'm getting errors pointing to a missing rustup installation while I'm very certain it is available and present in PATH:
Uncaught (in promise) Error: failed to start server: Error: Command failed: rustup run stable-x86_64-pc-windows-gnu rustc --version
error: toolchain 'stable-x86_64-pc-windows-gnu' is not installed

    at RustLanguageClient.startServerProcess (C:\Users\user\.atom\packages\ide-rust\lib\index.js:622)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)

Running rustup run stable-x86_64-pc-windows-gnu rustc --version in cmd works nicely and returns rustc 1.27.0 (3eda71b00 2018-06-19). rustup component list --toolchain stable confirms that the required components are there:
cargo-x86_64-pc-windows-gnu (default)
rls-preview-x86_64-pc-windows-gnu (installed)
rust-analysis-x86_64-pc-windows-gnu (installed)
rust-docs-x86_64-pc-windows-gnu (default)
rust-mingw-x86_64-pc-windows-gnu (default)
rust-src (installed)
rust-std-x86_64-pc-windows-gnu (default)
rustc-x86_64-pc-windows-gnu (default)

I've also tried to make it work with nightly-x86_64-pc-windows-gnu (that I also have along with RLS), but it only changed the flavor of the error to:
Error: Command failed: rustup run nightly-x86_64-pc-windows-gnu rustc --version
error: toolchain 'nightly-x86_64-pc-windows-gnu' is not installed

Debug mode doesn't show any more errors.

ide-rust uses the path that the atom process is supplied with & also adds ~/.cargo/bin if it isn't already there.
You could have a different environment setup launching atom & executing on the cli. On windows env var changes sometimes only take effect after logging-out & in again, so that's worth a try if you've changed env vars in your current session.
It sort of looks like you have 2 different rustup installs, that ide-rust's rls could think a toolchain wasn't installed that the cli does. Is that possible?
It might be worth me adding PATH info to the error logging to help debug these kind of issues.

Hmm, I don't think I've installed rustup more than once. My user environment variables (these are not present in the system variables) are:
HOME: C:\Local\poligon
CARGO_HOME: C:\Local\poligon\.cargo
RUSTUP_HOME: C:\Local\poligon\.rustup
Path: C:\Local\poligon\.cargo\bin;C:\Users\user\AppData\Local\atom\bin

I haven't tried relogging yet, I'll do it when I can.

Unfortunately relogging didn't help; any other options/debugging I can try?

Well I guess you can look at the env vars supplied to atom by typing into the console:
process.env

Maybe theres a difference from when you rust set in your cli?

I ran process.env in the console and Path contains C:\Local\poligon\.cargo\bin;C:\Users\c152216\AppData\Local\atom\bin, so this shouldn't be an issue. Or maybe it should be in all caps, i.e. PATH?

The case should be fine I have Path too in windows without issue.
I actually may have an idea, I remember having some issues in windows when not passing the full env with the commands. ide-rust does that now, but I just noticed only for starting rls rather than the earlier rustup checks that are failing for you.
I will add it in both places and make a release.

Ok I've made the 0.18 release as I was meaning to anyway. Let me know if it the change helps.

That did the trick; thanks!

authors: alexheretic ljedrz

repo: rust-lang-nursery/atom-ide-rust


text:
assert testing Fail types

I couldn't assert-test a Fail type without the help of the assert_matches crate.  Please tell me that there's a better way than this?
assert_matches!(failure, Err(failure::Error))

I don't know the assert_matches crate. If you post the error message you get, I could possibly assist you.

Sounds like there is an alternative!  Is there documentation or code examples I can reference that illustrate error testing?

Here's roughly what I'm doing:
assert_matches!(function_to_test().err().unwrap().downcast().unwrap(), MyErrorType::MyVariant{ etc });

Naively, I made this:
macro_rules! assert_fail {
    ($actual:expr, $expected:pat) => (assert_matches!(($actual).err().unwrap().downcast().unwrap(), $expected));
}

I wonder if something like this macro could be included with this crate? It certainly makes testing smoother. If there's an alternative that I don't know about that's cropped up since this issue was opened (two years ago :)), I'd love to hear about that too.

authors: Dowwie shaladdle withoutboats

repo: rust-lang-nursery/failure


text:
Compat wrapper methods

Made sure the Compat01As03 and Compat03As01 wrappers have the following methods:

get_ref
get_mut
into_inner

Closes #1704

The pipeline itself seems to time out:
creating directory /home/travis/.cache/sccache
No output has been received in the last 10m0s, this potentially indicates a stalled build or something wrong with the build itself.
Check the details on how to adjust your build configuration on: https://docs.travis-ci.com/user/common-build-problems/#Build-times-out-because-no-output-was-received
The build has been terminated

@VictorKoenders Could you rebase? I think the issue of ci was fixed by 08dfdc63afd0aadbc8935e14e867765f9a6d55b2.

Rebased onto master (I think, someone double check that for me, git is arcane)

authors: VictorKoenders taiki-e

repo: rust-lang-nursery/futures-rs


text:
Expand first-in-book use of certain abbreviations

I recently read the nomicon to delve deeper into the language. I noticed that a couple of abbreviations were never explained. These unexplained, although common abbreviations can trip a reader, as at least ABI was not immediately clear to me.

These are interesting cases, because at least in my mind, these aren't even really acronyms anymore. Rather they have become words on their own, in the same class as LLVM, GNU, CPU, GPU, etc.
Gonna check what some others think, but I'm inclined to merge this regardless.
(Although I almost want to flip them to be like "FFI (Foreign Function Interface)", since the acronym is really the more important thing!)

Done.
Part of why I worry about this is that when some people get here from higher level languages, these kinds of tutorials are the first thing they run into while learning about low-level things. These kinds of things increase the cognitive load. Of course, the expanded acronyms might be irritating or weird for someone more experienced, but that's probably why it's the first instance only that is expanded.

Thanks!

authors: Gankro hegza

repo: rust-lang-nursery/nomicon


text:
🐸

This switches from using @frankmcsherry’s differential dataflow to
using @frankmcsherry’s bespoke datalog engine: datafrog.
99% of this commit was authored by the one and only @frankmcsherry.

Final measurements:

Version
Workers
Compile Time
Run Time

:timer_clock:
1
210s
14.191s

:timer_clock:
2
210s
11.035s

:timer_clock:
4
210s
8.898s

:timer_clock:
8
210s
7.953s

:frog:
1
11s
6.843s

Amazing! Great work @frankmcsherry and @lqd!

authors: lqd nikomatsakis

repo: rust-lang-nursery/polonius


text:
"PreferVisual" indent_style?

I like the visual indent style:
fn main() {
    let v = something_short.do_stuff()
                           .do_more_stuff()
                           .map(|| {
                                    println!("Hello");
                                })
                           .collect()
                           .do_more_stuff();
}

But as the indentation and closures get longer, the closure body sometimes gets shifted all the way to the left and the following calls become "hanging in the air" (note the lack of ; after println!() here, if I put ; in the end rustfmt reports a line too long error):
fn main() {
    let v = something_very_long_and_complicated.do_stuff()
                                               .do_more_stuff()
                                               .map(|| {
        println!("An extremely long and informative message describing something interesting")
    })
                                               .collect()
                                               .do_more_stuff();
}

Perhaps a good idea would be to add a "PreferVisual" style which is able to fall back to the block style in these cases?
fn main() {
    let v = something_very_long_and_complicated
        .do_stuff()
        .do_more_stuff()
        .map(|| {
            println!("An extremely long and informative message describing something interesting")
        })
        .collect()
        .do_more_stuff();
}

We used to have a similar heuristic when the default style was visual. I think it got dropped when we switched the default indent style from visual to block, as it was fragile and complex.

Yeah, switching styles like this was pretty unpopular. It made formatting inconsistent and unpredictable. I don't think we'll bring back something like this.

authors: YaLTeR nrc topecongiro

repo: rust-lang-nursery/rustfmt


text:
Test runner interacts badly with redirected child process

Consider the code at https://gitlab.com/BartMassey/ptyknot/tree/pipes-direct/misc/piperef-rs . The relevant portion is in piperef.rs:
        ...
       // Write "hello world" to stdout.
        match write_mode {
            WriteMode::Macro => {println!("hello world");},
            WriteMode::C => {
                let buf = "hello world".as_bytes();
                let hello = std::ffi::CString::new(buf).unwrap();
                let bufptr = hello.as_ptr() as *const libc::c_void;
                check_cint!(libc::write(1, bufptr, buf.len()));
            }
        }
         ....

This code is run in a child process. When it is invoked by running it after cargo build, it works fine regardless of whether Macro or C mode is used. When it is invoked by cargo test, C mode works but Macro mode fails with an empty string. When it is invoked by cargo test -- --nocapture, both modes work again. Here's a transcript:
$ cargo build
   Compiling libc v0.2.14
   Compiling piperef v0.1.0 (file:///usr/local/src/ptyknot/misc/piperef-rs)
$ target/debug/piperef
$ cargo test
   Compiling piperef v0.1.0 (file:///usr/local/src/ptyknot/misc/piperef-rs)
     Running target/debug/piperef-80efeb997239b2ac

running 2 tests
test write_macro_test ... FAILED$<2>
test write_c_test ... ok$<2>

failures:

---- write_macro_test stdout ----
	thread 'write_macro_test' panicked at 'assertion failed: `(left == right)` (left: `""`, right: `"hello world"`)', piperef.rs:60
note: Run with `RUST_BACKTRACE=1` for a backtrace.

failures:
    write_macro_test

test result: FAILED$<2>. 1 passed; 1 failed; 0 ignored; 0 measured

error: test failed
$ cargo test -- --nocapture
     Running target/debug/piperef-80efeb997239b2ac

running 2 tests
test write_macro_test ... ok
test write_c_test ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured

$

It looks like the test runner is fouling up the environment somehow, but I can't figure out how by looking at stuff.

Thanks for the report! I think that this actually has to do with the test harness in the standard library rather than Cargo itself, could you open up a bug against rust-lang/rust with these contents?

Now filed as rust-lang/rust/#35136 . Thanks!

Ok, thanks!

authors: BartMassey alexcrichton

repo: rust-lang/cargo


text:
Can't add GitHub's new style teams as crate owners.

REPRO
0 - Have an older (not sure how old?) GitHub organization.
1 - Add a GitHub org team as a crate owner with cargo owner --add github:<org>:owners where <org> is the name of an organization.
2 - Click on the new owner's link on the crate's listing (e.g., https://github.com/orgs/<org>/teams/owners).
3 - Notice that GitHub says that the owners team is now the owner role.  Follow the suggestion by GitHub and rename the owners team to something non-conflicting like Maintainers.
4 - Attempt to add this team as a crate's owner with cargo owner --add github:<org>:Maintainers.
RESULT
    Updating registry `https://github.com/rust-lang/crates.io-index`
       Owner adding ["github:<org>:Maintainers"] to crate <crate>
error: failed to add owners to crate <crate>: api errors: could not find the github team <org>/Maintainers

PROLOG
GitHub 404's when navigating to the /orgs/<org>/teams/owners page, but works on /<org>/teams/Maintainers (as expected).
Cargo still allows removal/re-adding of the /orgs/<org>/teams/owners team, even though it's gone (not expected).
DETAILS
Platform = Windows 10, with 1.11 GNU x64 installer.
cargo --version == cargo 0.12.0-nightly (6b98d1f 2016-07-04)
rustc --version == rustc 1.11.0 (9b21dcd6a 2016-08-15)
crate = dxf
team = IxMilia/Maintainers
It should also be noted that the name of the organization starts with an upper-case letter, but running the cargo owner --add command with a lower-case organization results in a different error:
    Updating registry `https://github.com/rust-lang/crates.io-index`
       Owner adding ["github:IxMilia:maintainers"] to crate dxf
error: failed to add owners to crate dxf: failed to get a 200 OK response, got 502
headers:
    HTTP/1.1 100 Continue

    HTTP/1.1 502 Bad Gateway

    Connection: keep-alive

    Server: nginx

    Date: Wed, 14 Sep 2016 21:01:31 GMT

    Content-Type: text/html

    Content-Length: 166

    Via: 1.1 vegur

body:

<title>502 Bad Gateway</title>

502 Bad Gateway

nginx

Interesting! I think that this may actually have more to do with code on crates.io, perhaps the bug could be filed over there?
The API errors at least are coming from crates.io, and crates.io is the one communicating with GitHub about all the team information.

Thanks for the pointer!  Ported over to rust-lang/crates.io#446.

authors: alexcrichton brettfo


text:
cargo doc and cargo test --doc execute rustdoc in different directories.

Problem
It appears that when using workspaces and executing cargo against a manifest with only workspace members (i.e., at the root of a repository), cargo doc and cargo test --doc execute rustdoc in different directories. This interacts poorly with relative paths used in additional flags for rustdoc (either from environment variables or a Cargo configuration file).
Depending on the relative paths involved (e.g., ./path vs. ../path), this causes one of cargo doc or cargo test --doc to fail with an error stating that the path cannot be found.
This is likely complicated, but at first I expected that relative paths would resolve the same way for both cargo doc and cargo test --doc when executed in the same directory.
Steps

Create a repository with a workspace and a member package in a subdirectory.
Create an HTML file at the root of the repository (its contents do not matter).
Pass a relative path to this file to rustdoc via --html-in-header using an environment variable or Cargo configuration file.
Execute cargo doc and cargo test --doc from the root of the repository (using the workspace manifest).

See this commit in a workspace repository for an example of this problem. The CI for that project fails with similar errors on different operating systems.
Possible Solution(s)
I'm really not sure what is acceptable here. I encountered this when I tried to migrate away from using a simple shell script for generating documentation that uses the RUSTDOCFLAGS environment variable.
Notes
I've encountered this using both stable and nightly toolchains on Windows 10 and Arch Linux.
Output of cargo version: cargo 1.42.0 (86334295e 2020-01-31)
Output of cargo +nightly version: cargo 1.44.0-nightly (7019b3ed3 2020-03-17)

I suspect it was mostly an oversight that test --doc doesn't adjust the current dir.  Normal rustc/rustdoc execution is very careful about using relative paths and cwd here, but the corresponding usage for doc tests isn't so careful.

authors: ehuss olson-sean-k


text:
[fix]:Build script not rerun when target rustflags change

What does this PR try to resolve?
Fixes #13003

Note that we'd also need tests for this.  Ideally a test is by itself in the first commit, showing the problem (by passing).  The second commit fixes the problem and updates the test.  The change in the test helps show that we are testing the right thing and what the intended change was.

@rustbot author

authors: epage heisen-li weihanglo


text:
[beta] Go back to not hashing RUSTFLAGS in -Cmetadata

This is a beta backport of https://github.com/rust-lang/cargo/pull/7417

r? @ehuss
(rust_highfive has picked a reviewer for you, use r? to override)

:warning: Warning :warning:

Pull requests are usually filed against the master branch for this repo, but this one is against rust-1.39.0. Please double check that you specified the right target!

@bors r+

:pushpin: Commit be712ff70af7f182c32010a069df4d7a49b4a1b1 has been approved by ehuss

:hourglass: Testing commit be712ff70af7f182c32010a069df4d7a49b4a1b1 with merge 2f60d2389f88480aa58618f5db463a755bc49cdd...

:broken_heart: Test failed - checks-azure

@bors: r=ehuss

:pushpin: Commit e2637c04d6bdea085b4bb83d60a03307bec1182a has been approved by ehuss

:hourglass: Testing commit e2637c04d6bdea085b4bb83d60a03307bec1182a with merge 1c6ec66d5bae40e9dfd2fb82f091b5172c212d73...

:sunny: Test successful - checks-azure
Approved by: ehuss
Pushing 1c6ec66d5bae40e9dfd2fb82f091b5172c212d73 to rust-1.39.0...

authors: alexcrichton bors ehuss rust-highfive


text:
Rebuild if changed

When using the cc crate...
what is the proper way to set up build.rs and/or Cargo.toml so that cargo will automatically recompile and relink the C/C++ files if they are changed since the last compilation? Maybe even list the local header files so changing them will trigger recompilation/relink as well?
Alternatively, what is the proper way to force cargo to recompile all the C/C++ files?
Right now I can always remove the target/{debug,release} directories to force recompilation but it seems like a hack.

build.rs is executed whenever any file from the cargo package --list output is changed. So if you didn't list your C files in the include directive in your Cargo.toml yet, it might be time. This is assuming that you'd eventually have to do that, as you're likely to publish your crate. If not, then you would find println!("cargo:rerun-if-changed=dir/ect/ory"); in your build.rs useful.
It should be noted that none of this is actually cc-rs-specific, it's how cargo works in general.

It sounds as though I should expect the C compiler to be invoked if any of the files in cargo packager --list were changed. Did I understand this right?
Two points then:

Even if it did work this way, that would be sub-optimal.
In principle there should be a separate list of files which trigger C compilation (which would make this a specific issue for the cc crate). Of course "ideally" there should be a list of dependencies for each separate .c file to be compiled (that is, the list of .h files it includes), so not all the .c files would be compiled, just these that needed to. I guess it is a matter of deciding "how much like make do we want cc to be".
It isn't a huge deal as long as these files are small. I can live with "all C object files depend on all the package files".

More importantly, it doesn't seem to work for me.
I ensured that cargo package --list did list the .c files. It did even without an explicit include directive in Cargo.toml, but I added one anyway and also listed the .h files in it.
Regardless, if I touch any of the .c/.h files, then cc does not trigger re-compilation.
I'm attaching a small .tgz file which demonstrates the problem - see RUNME.sh and the results I get in RUNME.log.

I should expect the C compiler to be invoked if any of the files in cargo package --list were changed.

As already implied, the question is when does cargo execute the build.rs. That's all to it. The fact that build.rs invokes C compiler is immaterial to the said decision.

it doesn't seem to work for me.

Ah! It ought to be one of the recent modifications that broke it. It does work if you specify the dependency as cc = "<=1.0.73"... Not that I insist on doing this, but at least there is an explanation for why it stopped working the described way.

Even if it did work this way, that would be sub-optimal.

It's by cargo's design, we have to accept it.

I guess it is a matter of deciding "how much like make do we want cc to be".

It sounds like you'd be better off using cmake-rs. Idea would be to have cargo detect a change and hand it off to cmake to identify what actually needs to be done. Replicating the make functionality in cc-rs would probably be deemed out of this project's scope...

one of the recent modifications that broke it.

More specifically emission of cargo:rerun-if-env-changed=<this-n-that> in 1.0.74. Collateral problem here is that one single rerun-if apparently puts aside the internal cargo decision making mechanism. You can suppress the referred directives with .emit_rerun_if_env_changed(false) method.

Thanks for the clarification. As long as my C code is trivial, cc will do the trick. For larger, more complex projects, cmake-rs might be better. Good to know the options.
Yes, using 1.0.73 does fix the issue for me. Thanks!

I’m on vacation now, but I’ll investigate what broke in 1.0.74 when I get back.
Note that pinning a version like that will cause problems for your users down the line, since if another crate in the dependency graph depends on a later version of cc, cargo will error (it only duplicates versions if they would be semver incompatible).

Noted - thanks for the warning.
Happy holidays!

Is there anything more on this? I just ran into it in my project and it's quite a surprise when c files don't recompile (especially since they sometimes do - if you have errors and compilation fails, it will re-run on a new cargo build, but otherwise I need to cargo clean and rebuild all the rust code as well to get c to recompile).
I've tried adding .emit_rerun_if_env_changed(false) to the cc::Build chain in my build.rs but it doesn't seem to make any difference.

If I add println!("cargo:rerun-if-changed=src"); to build.rs this does trigger a rebuild on changes (all my .c and .h files are in src).

authors: bmwebster dot-asm orenbenkiki thomcc

repo: rust-lang/cc-rs


text:
Unify dashes and underscores in search

The docs.rs search function doesn't always unify dashes and underscores right now. For example, a search for serde-j  yields crates like serde-json-core or tokio-serde-json-mirror , but not the serde_json crate. The search on crates.io does not seem to have this problem.
(Originally reported on internals.rust-lang.org).

This could be solved with nothing more than a query.replace('-', '_') (as much as I don't like the allocation), but the behavior looks stranger than that so I'll investigate to see if that actually helps things any

Fixed by https://github.com/rust-lang/docs.rs/pull/1521.

authors: Kixiron jyn514 phil-opp


text:
fix broken match_version for prereleases

In 48437eae15cde8bb8bc0cc15fe959658cc575519 the semver-match excluded
pre-releases and the fallback logic only worked for *.
This change brings it back to the original behavior.

r? @Nemo157  or @jyn514 ?


text:
Emit canonical URLs for all rustdoc pages

Previously, we did not emit canonical URLs for crates that had an alternate documentation URL. However, this produces bad results for those crates, with older versions being selected as canonical even if the latest version uses docs.rs as its documentation URL.
Part of #74

Ping on this? :-)

LGTM, sorry for the delay

authors: jsha syphar


text:
Print a backtrace for crates which fail to build

Closes #821
r? @pietroalbini

I had trouble testing this because building from the queue requires running the daemon, and the daemon will try to add every crate ever published to the queue.


text:
A stream wrapper that holds the latest value exists?

I am trying to solve a problem like this:

I have a stream of T (let's call this S) that yields every 1 sec. It is basically like repeat stream of T but with some interval.
I want a stream wrapper around S so it returns None if S hasn't yield anything yet, Some(latest value) otherwise.

I handmade this wrapper by myself but with some combination of the existing stream wrappers could I solve my problem?
#[pin_project]
pub struct CachedStream<St: Stream> {
    #[pin]
    stream: St,
    cached: Option<St::Item>,
}
impl<St: Stream> CachedStream<St> {
    pub fn new(s: St) -> Self {
        Self {
            stream: s,
            cached: None,
        }
    }
}
impl<St: Stream> Stream for CachedStream<St>
where
    St::Item: Clone + std::fmt::Debug,
{
    type Item = St::Item;
    #[project]
    fn poll_next(self: Pin<&mut Self>, cx: &mut Context) -> Poll<Option<Self::Item>> {
        #[project]
        let CachedStream { mut stream, cached } = self.project();
        loop {
            let item = stream.as_mut().poll_next(cx);
            // dbg!(&item);
            match item {
                Poll::Ready(Some(x)) => {
                    cached.replace(x);
                }
                Poll::Ready(None) => {
                    return Poll::Ready(None);
                }
                Poll::Pending => {
                    if cached.is_some() {
                        break;
                    } else {
                        return Poll::Pending;
                    }
                }
            }
        }
        Poll::Ready(cached.clone())
    }
}

I don't think there is a combinator or combinator combination that provides equivalent functionality. (Maybe you could do something similar using ready_chunks, but probably very inefficient.)

Thanks. it seems to be yes.

If the underlying stream ended and only a partial vector was created, it'll be returned. Additionally if an error happens from the underlying stream then the currently buffered items will be yielded.

Finally, I realize what I am looking for a variant of tokio::sync::watch that won't delete the retained value after polled. Now I am doing my work with wrapping the sync::watch's receiver by the above CachedStream but yes I feel better if there is one like this in the official.

Finally, I realize what I am looking for a variant of tokio::sync::watch that won't delete the retained value after polled. Now I am doing my work with wrapping the sync::watch's receiver by the above CachedStream but yes I feel better if there is one like this in the official.

IIUC, tokio::sync::watch::Receiver doesn't delete the latest value until the next recv or next call, so it should be able to use the borrow method to get the latest value.

I didn't know that. Thank you for the information. I will check later and get back to you

@taiki-e I tried this using async_stream macro but this is not what I what because the code looks like generating a producer that infinitely looping in maximum speed with which the AsyncStream is the consumer.
    let st = async_stream::stream! {
        loop {
            yield rx.borrow().clone();
        }
    };

Unfortunately, what I want is a stream that borrows and yields only once when the client code polls. So this will become something like
let st = async_stream::on_poll! {
    yield rx.borrow().clone();
}

I don't want to handcraft classes to do this. Do you have some idea of existing tools to make this happen?

I tried this. it is infinite lazy list of borrowed values and the for loop in the stream macro is taking this values one by one. This is probably what I want.
    let it = std::iter::repeat_with(|| {
        rx.borrow().clone()
    });
    let st = async_stream::stream! {
        for x in it.into_iter() {
            yield x
        }
    };

@akiradeveloper
borrow does not update the value, so it needs to be used in combination with recv/next/poll_next. Instead of using async_stream!, you probably need to wrap the receiver with a helper function something like:
use futures::stream::{self, Stream, StreamExt};
use std::task::Poll;
use tokio::sync::watch;

fn watch_helper<T: Clone>(mut rx: watch::Receiver<T>) -> impl Stream<Item = T> {
    stream::poll_fn(move |cx| {
        while rx.poll_next_unpin(cx).is_ready() {}
        Poll::Ready(Some(rx.borrow().clone()))
    })
}

@taiki-e My problem is resolved. Thank you so much!

authors: akiradeveloper taiki-e

repo: rust-lang/futures-rs


text:
StreamExt is hard to find

This is more a user story than anything else. Say I have a Stream of futures and I want to do something with it. The first thing I did was go to https://docs.rs/futures/0.3.13/futures/, which links to https://docs.rs/futures/0.3.13/futures/stream/trait.Stream.html. Great, this looks like what I want! Then I look around on the page, and there's basically nothing there. poll_next looks complicated and low-level, and size_hint is not what I need. Then there's a very long list of "Implementors", which looks vaguely right, but I don't know which of them I need because they're not documented (presumably because I'm supposed to read the docs on StreamExt).
I figured this out by asking @Nemo157, but it would be nice to link directly there from the docs. I tried this originally, but it had no effect (probably because of https://github.com/rust-lang/rust/issues/81893):
diff --git a/futures-util/src/stream/mod.rs b/futures-util/src/stream/mod.rs
index f3b2baa4..c613843b 100644
--- a/futures-util/src/stream/mod.rs
+++ b/futures-util/src/stream/mod.rs
@@ -11,7 +11,11 @@

 #[cfg(feature = "alloc")]
 pub use futures_core::stream::{BoxStream, LocalBoxStream};
-pub use futures_core::stream::{FusedStream, Stream, TryStream};
+pub use futures_core::stream::FusedStream;
+/// Most functions on this trait are implemented through [`StreamExt`].
+pub use futures_core::stream::Stream;
+/// Most functions on this trait are implemented through [`TryStreamExt`].
+pub use futures_core::stream::TryStream;

 // Extension traits and combinators

thanks. first, we need to link to module instead of trait, in top page. (like io, channel, executor, etc.). next, we need to improve module docs (probably fine with copy of std).

first, we need to link to module instead of trait, in top page. (like io, channel, executor, etc.).

Sure, that could work.

next, we need to improve module docs (probably fine with copy of std).

That doesn't help with StreamExt though - the std docs never mention any of the extension traits.

That doesn't help with StreamExt though - the std docs never mention any of the extension traits.

you are right. copy is not enough, we need to add section or description for StreamExt and utils.


text:
Add W_EXITCODE to construct an exit code

On Linux, sys/wait.h defines a W_EXITCODE macro to construct an exit
code from a return value and a signal number. Provide an equivalent
function.

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @JohnTitor (or someone else) soon.
If any changes to this PR are deemed necessary, please add them as extra commits. This ensures that the reviewer can see what has changed since they last reviewed the code. Due to the way GitHub handles out-of-date commits, this should also make it reasonably obvious what issues have or haven't been addressed. Large or tricky changes may require several passes of review and changes.
Please see the contribution instructions for more information.

These stuff are really part of musl? I cannot find any reference for musl and emscripten.

AFAIK those two are non standard extensions.
Definitely not available in musl.

Oh, I just realized it isn't in musl.

These are ultimately designed to match kernel ABI: they construct exit codes in the form that kernel syscalls (like waitpid or wait4) would return. They're the reverse of things like WIFEXITED and WEXITSTATUS. They're Linux-specific; other platforms that have them would need to define them consistently with define exit codes and WIFEXITED and WEXITSTATUS and similar.

Any thoughts on this? Does it seem reasonable to merge, now that it includes W_STOPCODE as well?

These are ultimately designed to match the Linux kernel ABI

So, this should be fine to use in musl or emscripten, right? If so, I don't have objections here and would be happy to merge.

It should be fine to use on any Linux libc, including musl.

authors: JohnTitor joshtriplett mati865 pickfire rust-highfive

repo: rust-lang/libc