Wednesday, June 10, 2026
618126ae-78cd-425c-82cb-f77deede7aa3
| Summary | ⛅️ Mostly clear until night. |
|---|---|
| Temperature Range | 19°C to 27°C (67°F to 81°F) |
| Feels Like | Low: 71°F | High: 90°F |
| Humidity | 80% |
| Wind | 11 km/h (7 mph), Direction: 222° |
| Precipitation | Probability: 0%, Type: No precipitation expected |
| Sunrise / Sunset | 🌅 05:34 AM / 🌇 08:00 PM |
| Moon Phase | Waning Crescent (82%) |
| Cloud Cover | 20% |
| Pressure | 1010.5 hPa |
| Dew Point | 68.48°F |
| Visibility | 6.11 miles |
Dependabot now supports Deno. This applies to version updates, not security updates.
Add a Deno entry to your .github/dependabot.yml file, and Dependabot will start opening pull requests on the next scheduled run.
The post Dependabot version updates now support the Deno ecosystem appeared first on The GitHub Blog.
Our next npm major version, v12, introduces security-related default changes to npm install. All these changes are available behind warnings in npm today on 11.16.0 or newer, so you can prepare before the upgrade. v12 is estimated to release in July 2026.
Each change turns an npm install behavior that runs automatically today into one you explicitly opt into:
allowScripts defaults to off: npm install will no longer execute preinstall, install, or postinstall scripts from dependencies unless they are explicitly allowed in your project. This includes native node-gyp builds (i.e., a package with a binding.gyp and no explicit install script still gets blocked, because npm runs an implicit node-gyp rebuild for it). prepare scripts from git, file, and link dependencies are blocked the same way. To see what would be blocked, run npm approve-scripts --allow-scripts-pending. Then allow the packages you trust with npm approve-scripts and block the rest with npm deny-scripts. The resulting allowlist is written to package.json and should be committed. If your install routine runs scripts, you can observe warnings in npm 11.16.0+.
--allow-git defaults to none: npm install will no longer resolve Git dependencies (direct or transitive) unless explicitly allowed via --allow-git. This closes a code-execution path where a Git dependency’s .npmrc could override the Git executable, even with --ignore-scripts. This change was previously announced on 2026-02-18 and is available in npm 11.10.0+.
--allow-remote defaults to none: npm install will no longer resolve dependencies from remote URLs, such as https tarballs (direct or transitive), unless explicitly allowed via --allow-remote. This flag is available in npm 11.15.0+. The related --allow-file and --allow-directory flags are not changing their defaults in v12.
Upgrade to npm 11.16.0 or later, run your normal install, and review the warnings. Use npm approve-scripts --allow-scripts-pending to see which packages have scripts, approve the ones you trust, and commit the updated package.json. After that, only the scripts you approved keep running once you upgrade. Anything you leave unapproved will stop. More details are available in our docs at npm approve-scripts, npm deny-scripts, and allow-scripts config (for npx and global installs). Please share your comments and questions in our community discussion.
The post Upcoming breaking changes for npm v12 appeared first on The GitHub Blog.
Claude Fable 5 from Anthropic is now available in GitHub Copilot, the first model in Anthropic’s Mythos class, designed for long-horizon, autonomous coding and knowledge-work tasks. Unlike other Claude models in GitHub Copilot, Claude Fable 5 requires data retention to operate Anthropic’s safety classifiers. Continue reading for more details. In our internal benchmarks on autonomous coding workflows, Fable 5 completed equivalent work with fewer tool calls and lower token consumption than previous Opus-tier models.
This model is billed at provider list pricing under Usage Based Billing. See GitHub Copilot’s pricing for models and requests for details.
Claude Fable 5 will be available to Copilot Pro+, Max, Business, and Enterprise users. You’ll be able to select the model in the model picker in:
Rollout will be gradual. Check back soon if you don’t see it yet.
Copilot Enterprise and Copilot Business plan administrators must enable the Claude Fable 5 policy in Copilot settings. The policy is off by default.
Important: Claude Fable 5 requires data retention. As part of Anthropic’s safety architecture for this model, Anthropic retains prompts and outputs for up to 30 days to operate safety classifiers that detect harmful or abusive use. After 30 days, it deletes the prompts and outputs. Retained data is not used to train Anthropic’s models.
This data retention applies only to Claude Fable 5. All other Claude models in GitHub Copilot, including Claude Opus 4.8, Sonnet 4.5, and Haiku 4.5, continue to operate under Zero Data Retention (ZDR).
For more on how Anthropic handles this data, see Anthropic’s commercial terms and data retention policy. Enabling the Claude Fable 5 policy constitutes acknowledgement of this requirement. Leaving it off keeps Claude Fable 5 unavailable to your organization.
To explore all models available in GitHub Copilot, see our documentation on models and get started with Copilot.
Join the GitHub Community to share your feedback.
The post Claude Fable 5 is generally available for GitHub Copilot appeared first on The GitHub Blog.
GitHub code scanning now supports scheduled security scans of repositories that have had no pushes or pull requests for six months or more. Organizations can use this to maintain continuous security coverage across all their repositories, including codebases that are no longer under active development. This setting only applies to repositories that use code scanning default setup.
When enabled, inactive repositories are automatically scanned every 30 days. This setting applies to all repositories in the organization. You can turn this on from Settings > Advanced Security > Global Settings by enabling Keep scheduled scans running every 30 days for inactive repositories.
To learn more, see configuring global security settings for your organization.
The post Periodic code scanning of inactive repositories appeared first on The GitHub Blog.
Security validation for third-party coding agents is now generally available. GitHub supports third-party coding agents (including Claude and OpenAI Codex) that work directly within your repositories to implement features, fix bugs, and improve test coverage. Now, code generated by these agents receives the same automatic security validation already available for GitHub Copilot cloud agent. Learn more by reading Risks and mitigations for GitHub Copilot cloud agent.
When a third-party coding agent creates code in your repository, GitHub now automatically analyzes it for potential security vulnerabilities using CodeQL, checks newly introduced dependencies against the GitHub Advisory Database, and uses GitHub secret scanning to detect sensitive information such as API keys and tokens. If the analysis finds any issues, the agent attempts to resolve them before finalizing the pull request.
Since we released automatic code validation for Copilot cloud agent in October 2025, we’ve proactively prevented hundreds of potential security leaks and vulnerabilities. Extending this protection to third-party agents helps ensure that every line of agent-generated code undergoes the same security checks, regardless of which coding agent wrote it.
These security validations are on by default and follow your repository’s Copilot settings for which validation tools to use. If you’ve already enabled security validation for Copilot cloud agent, third-party agents will automatically receive the same protections. Security validation doesn’t require a GitHub Advanced Security license. See Configuring agent settings for more information.
The post Security validation for third-party coding agents appeared first on The GitHub Blog.
Cyprus’ role in regional and international energy developments has been strengthened in recent years, Energy Minister Michael Damianos said on Tuesday, as he evaluated the day’s Atlantic Council global energy forum, which he attended in Washington, DC.
He told the Cyprus News Agency that the forum had “highlighted the Republic of Cyprus’ strengthened role in regional and international energy developments”, before stressing that the eastern Mediterranean region has “significant prospects” for the energy sector.
To this end, he said the region can “contribute to the diversification of energy sources and routes”.
He also stressed the importance of the “3+1” format of diplomatic deliberations between Cyprus, Greece, Israel, and the United States, saying that the format creates conditions for “joint initiatives with tangible results”.
On this front, he pointed out that he will attend a ministerial meeting in the “3+1” format in Houston, Texas, on Thursday alongside Greece’s Stavros Papastavrou, Israel’s Eli Cohen, and the US’ Chris Wright, with the aim of “further deepening cooperation and formulating specific next steps”.
Those next steps will include the creation of an “Eastern Mediterranean energy centre”, which Damianos said will provide “significant technocratic support” for energy projects and infrastructure issues.
His comments come with the governments of Cyprus and Greece having earlier this year sent a joint letter to the European Central Bank with the aim of securing a new due diligence study to drive forward the Great Sea Interconnector project, which, if completed, will link the energy grids of Cyprus, Greece, and Israel.
The Cyprus Mail was told at the time that should the study deem it appropriate, funding for the project’s completion may be provided by the Luxembourg-based bank in due course.
Damianos has previously said that “from a security of supply perspective”, the completion of the project is “a must”, but pointed out that the Republic of Cyprus will, according to current estimates, find itself responsible for 63 per cent of the project’s overall cost.
“If the project costs €1.9 billion, Cyprus will pay about €800 million. If it costs more, we will still be paying 63 per cent – and that means through consumers’ bills,” he said.
The project itself appears at present to be progressing slowly, though good news did come about in March when French cable construction company Nexans confirmed that an undersea trial of the type of cable which will be used was completed successfully.
However, Nexans had earlier this year formally acknowledged that the delivery schedule for those cables is being renegotiated, pushing the planned completion date into the next decade.
Nonetheless, European Energy Commissioner Dan Jorgensen told the Cyprus Mail last month that the EU “remains committed to defending its interests and those of its member states, as well as to upholding regional stability”, and as such will continue to support the interconnector project.
“The commission supports the development of an electricity interconnection between Greece and the island of Cyprus with the Great Sea Interconnector”, which, he said, “has been awarded the status [of] project of common interest and a €657 million grant”.
High-profile Turkish Cypriots on Tuesday expressed displeasure with Monday’s signing of a status of forces agreement between the Republic of Cyprus and France, which will, among other things, allow France to station troops on the island.
Turkish Cypriot ‘prime minister’ Unal Ustel accused the Greek Cypriot side of “increasingly intensifying” the buildup of military assets in and around the island “under the guise of humanitarian purposes”, while instead aiming to “gain military advantages”.
This, he said, “disregards the Turkish Cypriot people’s inherent rights to sovereign equality on the island” and “is intended to disrupt the delicate balances established concerning the security and stability and our region”.
He added that the agreement “holds no validity whatsoever from the perspective of the Turkish Republic of Northern Cyprus and the Turkish Cypriot people”.
“The developments reaffirm once again the vital importance of the effective and active guarantee provided by the Republic of Turkey, which is the guarantor of the Turkish Cypriot people’s security, and make evident the need to further strengthen our cooperation with our motherland, Turkey, in the fields of defence and security,” he said.
He went on to say that the “signing of military cooperation and armament agreements with various states … including those which do not even have a coastline in the eastern Mediterranean” on the part of the Greek Cypriot side is a “manifestation of [its] insincerity” with regard to the Cyprus problem.
On this front, he said that the Greek Cypriot side is both “making arrangements which allow the deployment of foreign military elements on our island and enabling the use of Cyprus as a base for various military purposes” but at the same time “insisting on the condition of ‘zero troops, zero guarantees’ in the context of reaching an agreement on the island”.
“It is evidently clear that such provocative steps further deepen the deficit of trust between the two peoples on the island,” he added.
He then said that “the Greek Cypriot leadership is openly demonstrating its true intentions by systematically taking unilateral steps which disregard the Turkish Cypriot people’s inherent rights and lead to faits accomplis on the island”.
“It is absolutely unacceptable for the Greek Cypriot administration, which has no authority to represent the Turkish Cypriot people and the entirety of the island of Cyprus, to enter into unilateral agreements on matters concerning the whole island,” he said.
As such, he added, “the Greek Cypriot leadership must immediately refrain from taking steps which risk turning not only our island but also our region into a target”.
He then turned his attention to France’s decision to sign the agreement, saying that “it is evident that states like France … are continuing to harm the process of creating cooperation and dialogue between the two states on the island”.
This, he said, is as the country “disregarded the current realities on the island of Cyprus and the Turkish Cypriot people’s inherent rights to sovereign equality”.
“We invite France, which has no place whatsoever in the order of security and stability established in the eastern Mediterranean with the 1974 peace operation, to put an end to its damaging initiatives in our region,” he said.
Opposition political party CTP deputy leader Asim Akansoy, meanwhile, described the timing of the agreement as “quite unfortunate” given that it came on a day when United Nations envoy Maria Angela Holguin was on the island and “making efforts for the demilitarisation of [it] and a just and lasting peace”.
“It was a very unfortunate, unacceptable, and strongly reprehensible step,” he said, before warning that it also “has the potential to increase tensions” both between the island’s two sides and in the wider region.
He called for Turkish Cypriots across the political spectrum to “develop a common stance” on the matter.
“If a consensus is reached, we must strongly oppose a third state, a state which is not a guarantor, from stationing troops in these lands, through steps to be taken at the UN, steps to be taken at the EU, and initiatives to be taken at the Turkish level,” he said.
The agreement was signed by French Armed Forces Minister Catherine Vautrin and Cypriot Defence Minister Vasilis Palmas in Nicosia, on the sidelines of the day’s informal European foreign affairs council (Fac) meeting in its defence configuration.
Plans for a status of forces agreement had been announced by Cypriot government spokesman Konstantinos Letymbiotis when French President Emmanuel Macron most recently visited the island in April.
President Nikos Christodoulides had said at the time that the agreement will “strengthen humanitarian military cooperation and joint action at a regional level”, and “provide for the presence of French forces on Cypriot territory for humanitarian purposes”.
Macron had spoken at length on the matter of defence during his visit to Cyprus, saying that the mass deployment of European military hardware in and around Cyprus after the island was hit by an Iranian-made drone in March, “constituted a reaffirmation of our determination to secure Europe’s space”.
“I said it in a simple way on March 9, that when Cyprus was attacked, it was Europe which was attacked,” he said.
As such, he said, “we therefore reinforced defence capabilities in the region with the deployment of military assets, in particular with the French carrier strike group” belonging to the aircraft carrier the Charles de Gaulle, which has been in the region since last month.
“This support and this concrete manifestation of the solidarity which links us as members of the European Union, and in terms of relations between France and Cyprus, was bolstered in December in the form of the strategic partnership,” he said, referring to the deal he had signed with Christodoulides in Paris at the end of last year.
Two members of social media influencer Fidias Panayiotou’s Direct Democracy Cyprus party complained on Tuesday that the party disregarded the fanbase in the process leading up to the vote for House president.
Ioannis Damianou and Nikos Loukas, known by his social media alias ‘Loukanikos’ (The Sausage), uploaded a video in which they criticised the party leadership for not using the party’s Agora mobile application to ask followers for their feedback.
The app was designed to allow the public to vote on internal candidates and political policies and to indicate exactly how they want their parliamentary representatives to vote.
In the short clip, the two party cadres grumble that “some way should have been found to take the public’s opinion into consideration”.
They stressed that their complaint has nothing to do with the party choosing to back Disy’s Annita Demetriou for the position of House president per se, but rather that the fanbase was left out of the decision making.
Similar gripes have been seen on social media over the past days.
But despite this perceived faux pas, Damianou and Loukas said, they continue to support the party overall.
“Let’s give time for things to shape out,” they add.
Earlier this month, Disy leader Demetriou got comfortably re-elected House president, thanks partly to the four votes from the Direct Democracy Cyprus MPs.
In a clip of his own, Panayiotou explained why the party decided to back Demetriou rather than abstaining.
The 26-year-old MEP argued that “Annita would have been House president anyway.”
He claimed he managed to extract concessions from Disy in exchange for supporting Demetriou’s candidacy.
But he also said this transient partnership with Disy constitutes neither a “blank cheque” nor does it represent “a united front” for the 2028 presidential elections.
This Friday, the summer’s last Fork Food Market takes places and it arrives with a twist. Not only does it change location, moving to the old GSP square, but it also supports Telethon with a €3 entrance donation.
Live music by the Time Surfers band, activities for children, bars and food stalls will start welcoming guests at 7pm. With preparations underway for this epic finale, the organisers have shared the menu that will be served this Friday.
Mr Stache will serve three types of pizza (marinara, margherita and pepperoni), Road Buns will prepare sizzling siracha beef burgers, veggie beetroot burgers and their signature oregano fries, Top Dog will serve its original pepperoni hot dog and Bao will have its popular pork or mushroom bao buns.
Asian lovers will enjoy Rha Tha Thai’s pad Thai noodles with either chicken or prawn, grilled chicken satay and veggie spring rolls. A pork dish with salad and pitta will be served by Ta Kreata Allwspws, while Falafel Extra by Feras will have falafel wraps and chicken gyros. On the dessert front, Churros Amigos will satisfy those with a sweet tooth with its praline churros with cookies or hazelnut and white chocolate with cookies. Bon appetit Nicosia!
Fork Food Market- Telethon
Summer’s last street food market raises money for charity. June 12. Old GSP Square, Nicosia. 7pm. €3 donation entry for adults. Free entrance for under 18-year-olds. www.forkfoodmarket.com
Energy Minister Michalis Damianos used his participation at the 10th Ministerial Meeting of the East Mediterranean Gas Forum (EMGF) in Washington to stress that current geopolitical developments make it essential to deepen regional cooperation, diversify supply sources and routes, and strengthen energy infrastructure.
The meeting took place on Monday at the headquarters of the US Chamber of Commerce and brought together the energy ministers of the forum’s member states.
Observers at the gathering included US Energy Secretary Chris Wright, as well as representatives of the European Union and the World Bank, according to an announcement by the ministry.
During his intervention, Damianos highlighted the strategic role of the EMGF as a pillar of regional cooperation and energy security in the Eastern Mediterranean.
He reiterated the support of the Republic of Cyprus for the further development of the organisation and its long-term strategy.
The minister stressed that natural gas should remain at the core of the forum’s activities, while cooperation should also be expanded into areas such as hydrogen, electricity interconnections and renewable energy sources.
He emphasised that current geopolitical developments require deeper regional cooperation, diversified supply routes and stronger energy infrastructure.
Damianos also underlined the potential of the Eastern Mediterranean to make a substantial contribution to Europe’s energy security by acting as a reliable alternative source of supply.
He further pointed out that the Cyprus presidency of the Council of the European Union creates additional opportunities to strengthen dialogue and cooperation between the EU and countries in the region.
According to the joint declaration adopted after the conclusion of the meeting, ministers and heads of delegations reaffirmed the importance of the EMGF as a key platform for dialogue and cooperation aimed at enhancing energy security and regional stability in an increasingly uncertain geopolitical environment.
They also agreed to continue discussions on the forum’s revised long-term strategy, which seeks to promote interconnected and sustainable energy systems.
The strategy also aims to establish the Eastern Mediterranean as a strategic energy corridor linking the Middle East, Europe and Africa.
At the same time, participants expressed their commitment to further strengthening cooperation within the forum, with full respect for the sovereign rights of member states over their natural resources in accordance with international law.
On the sidelines of the summit, Damianos held a bilateral meeting with Egyptian Petroleum and Mineral Resources Minister Karim Badawi.
The two sides reviewed progress on the joint energy projects between Cyprus and Egypt, with particular emphasis on the development of the Cronos and Aphrodite natural gas fields.
They also discussed prospects for further strengthening cooperation between the two countries.
The minister additionally met at the White House with Jarrod P. Agen, Executive Director of the National Energy Dominance Council.
According to the ministry, the meeting focused on issues relating to energy policy and energy security, as well as prospects for deepening energy cooperation between the Republic of Cyprus and the United States.
On Tuesday, Damianos is scheduled to participate in the Eastern Mediterranean Energy Business Forum organised by the Atlantic Council.
He will also deliver an address at the 41st annual PSEKA conference.
On Wednesday, the minister will take part in a high-level discussion at the Atlantic Council Global Energy Forum entitled “Europe’s Path from Energy Crisis to Lasting Resilience”.
On Thursday, he will travel to Houston to attend the ministerial meeting of the 3+1 cooperation framework.
He will also participate in the official inauguration ceremony of the Eastern Mediterranean Energy Center at the Baker Institute of Rice University.
The ministry said the series of meetings reflects Cyprus’ growing role in regional energy diplomacy and ongoing efforts to strengthen partnerships aimed at enhancing energy security and stability across the wider Eastern Mediterranean.
A court on Tuesday ordered authorities to impound the villa belonging to Malaysian-born Jho Low, an internationally wanted fugitive who in 2015 managed to secure Cypriot citizenship by investing in real estate on the island.
According to a statement made by the attorney-general’s office, the application to seize the property was filed jointly by attorney-general George Savvides and Mokas – the anti-money laundering agency.
Lawyers representing Low consented, the statement added.
The application to seize the property, which is worth around €6 million and is located in Ayia Napa, cited the law for the prevention and suppression of money-laundering activities.
According to media reports, it is the first time a Cypriot court has ordered the impounding of a property without a conviction.
The order was issued by Nicosia district court.
Back in June 2024, the cabinet revoked Low’s Cypriot passport.
Low, accused of looting $4.5 billion from Malaysia’s sovereign wealth fund, was granted Cypriot citizenship in 2015.
Although under investigation at the time, he was not officially a wanted man until October 2016 when Interpol issued a red notice in his name. After the Malaysian elections in 2018, the country’s elected government reopened an investigation and issued arrest warrants against him.
Low bought a seaside mansion in Ayia Napa, securing a Cypriot passport under the now-defunct citizenship-by-investment programme – also known as the ‘golden passports’ scheme.
He also donated around €310,000 to the late ex-Archbishop Chrysostomos who put in a good word with the interior ministry.
The story broke in 2019, after the island’s citizenship programme came under intense scrutiny.
Finance Minister Makis Keravnos will travel to Luxembourg on Wednesday to participate in the upcoming Eurogroup meeting and chair the Ecofin Council the following day as part of Cyprus’ responsibilities during its Council of the European Union presidency.
According to the finance ministry, Eurozone finance ministers meeting on June 11, 2026, will discuss macroeconomic and fiscal developments in the euro area.
They will also be briefed on the International Monetary Fund’s (IMF) assessment of euro area policies.
The discussions will then continue in an enlarged format involving all European Union member states.
During that session, ministers will exchange views on economic and energy security within the European Union, based on a presentation by International Monetary Fund managing director Kristalina Georgieva.
Ministers will also examine the economic implications of efforts to strengthen the EU’s technological autonomy.
The discussion will be based on a presentation by David Ives, professor at the University of London.
Later the same evening, Keravnos will take part in a working dinner on advancing reforms, attended by former European Commission president Jean-Claude Juncker.
On June 12, 2026, the Cypriot finance minister will chair the Ecofin Council, bringing together finance ministers from across the bloc.
According to the finance ministry, ministers will discuss amendments to the regulation governing the Carbon Border Adjustment Mechanism (CBAM) with the aim of reaching a general approach.
The regulation seeks to impose a carbon levy on specific imported products, ensuring a level playing field between European and imported goods.
The proposed changes are intended to improve the effectiveness of the mechanism and extend its scope to additional products.
Ministers will subsequently discuss a package of proposals aimed at the further development of financial market infrastructure and the supervision of capital markets across the European Union.
The debate will be based on a discussion paper prepared by the Cyprus presidency.
The legislative package is designed to deepen the single market for financial services, a move expected to contribute significantly to the competitiveness of the European economy.
Finance ministers will also exchange views on the economic and fiscal consequences of Russia’s invasion of Ukraine.
In addition, the Ecofin Council is expected to approve the revised Recovery and Resilience Plans of Portugal, Slovakia, Spain, Belgium and Poland.
Ministers will then discuss the Spring Package of the European Semester, the mechanism used to coordinate the economic policies of EU member states, following a presentation by the European Commission.
The meeting is also expected to adopt a decision activating Spain’s national escape clause.
Another decision is expected to formally terminate the Excessive Deficit Procedure for Malta.
Alongside the Ecofin meeting, Keravnos will participate in the annual meetings of governors of the European Stability Mechanism and the European Investment Bank, the ministry said.
President Nikos Christodoulides on Tuesday congratulated Armenian Prime Minister Nikol Pashinyan after his Civil Contract party won a majority in the country’s parliament at Sunday’s parliamentary election.
“Warmest congratulations, Nikol Pashinyan, on your election victory. The people of Armenia have reaffirmed their commitment to a European future. Cyprus stands ready to further elevate our bilateral cooperation and relations between the European Union and Armenia,” he wrote in a post on social media.
Civil Contract won 64 of the 105 seats in Armenia’s parliament, taking just shy of half of the votes cast across the country, granting Pashinyan, who became prime minister following the “velvet revolution” of 2018, the right to extend his term in office until 2031.
The “velvet revolution” was a series of protests held in Armenia’s capital, Yerevan, and in cities across the world which host large Armenian populations, which brought down the government of the day, led by Serzh Sargsyan, and predicated a shift away from alignment with Russia which had characterised Armenian diplomacy since the first world war.
“The people of Armenia voted for peace, regional prosperity, and regional cooperation, and I hope this will be met with a positive response from Turkey and Azerbaijan,” Pashinyan told a press conference after victory was secured on Mondau, adding, “we need to institutionalise peace between Armenia and Azerbaijan”.
He had earlier taken the opportunity to highlight his plans for closer ties with Europe, saying that “the European Union is our main partner in democratic reform implementation, and we will continue that path” when he cast his vote on Sunday.
Given this pro-European sentiment, his victory was welcomed in Brussels, with European Commission President Ursula von der Leyen offering him her congratulations, and declaring that “the spirit of the velvet revolution you led in 2018 is alive and well”.
She added that “we deeply value our partnership with a democratic Armenia that is drawing ever closer to Europe”, and that “Armenia can count on us”.
Turkey, Armenia’s largest neighbour, also expressed satisfaction with the result, with the country’s foreign ministry saying that it “welcomes” that the elections “were concluded in a peaceful and calm atmosphere”.
“In the post-election period, we hope that Armenia will take bolder steps towards peace and normalisation in the region. Turkey will continue to contribute to regional stability and prosperity, as it has done to date, based on the common interests of the countries of the region,” it said.
Next for Armenia may be a referendum on a new constitution, with Azerbaijan and Turkey demanding that references to the long-disputed Karabakh region be removed.
Karabakh was part of the Azerbaijan Soviet Socialist Republic (SSR) but then fell under Armenian control following a war in the late 1980s and early 1990s, with a second war in 2020 then seeing the region return to Azeri control.
Civil Contract had finalised the draft text of a new constitution in March, but despite winning Sunday’s election, failed to win the two-thirds majority in parliament which would have allowed it to unilaterally call a referendum on that new constitution.
As such, it will require votes from opposition parties, or defectors from those opposition parties, to call such a referendum.
Azerbaijan and Turkey would like to see the preamble of Armenia’s current constitution expunged, as it makes reference to “the fundamental principles of Armenian statehood and the nationwide objectives enshrined in the declaration on the independence of Armenia”.
That declaration had referred to a “reunification of the Armenian SSR and the mountainous region of Karabakh” – a point Azerbaijan considers unacceptable, and which Turkey has said must be removed for it to open its border with Armenia.
Cocaine played a part in the majority of deaths caused by drug overdoses in Cyprus in 2024, according to data released in the European Union drugs agency’s latest annual European drug report on Tuesday.
The report found that cocaine was involved in the majority of overdose deaths in three other EU member states – Luxembourg, Malta and Portugal – with statistics from no fewer than 20 other member states showing that opioids were involved in the plurality of overdose deaths.
Cyprus was also mentioned in the report’s section on the potential for HIV outbreaks caused by the sharing of needles and increased use of stimulants, though the report did make clear that the number of diagnoses of HIV linked to injecting drug use across the EU declined to 822 in 2023.
However, the diagnosis rate – 1.83 per million people – remains almost twice as high as the joint United Nations programme on HIV and Aids (UNAids)’ target of 0.9 per million.
The report said that one “essential element” of efforts to drive this figure down is the provision of “sterile injecting equipment” to those using injecting drugs, so as to ensure that those who are using the drugs do not accidentally contract HIV.
“Nonetheless, levels of needle and syringe provision are inadequate in relation to estimated needs in several EU member states, including Bulgaria, Cyprus, Lithuania, Hungary, Poland and Slovakia,” it said.
Later, the report also made reference to “high-risk use of methamphetamine” in Cyprus, with 38,200 people on the island classified as “high-risk” users of the drug.
Overall, the European Commission said that the report found that “drugs have an increasingly negative impact on European health and security as they have become more available, more diverse and more potent”.
“Illicit drugs, including cocaine and synthetic drugs as well as new psychoactive substances, are widely available. New cannabis products continue to appear, while the variety of opioids and stimulants sold is on the rise,” it added,
It also warned that “drug trafficking constitutes a major threat to the security in Europe”, and that “organised crime networks are diversifying their trafficking routes and methods to evade detections, following intensified policing operations at major European ports”.
Upon the report’s presentation, European Internal Affairs Commissioner Magnus Brunner highlighted the spectre of overdose deaths, with 7,600 being recorded in the report.
“We must pull out all the stops to prevent dangerous new products from flooding the market and use the full force of the law to strip illegal traffickers of their business model,” he said.
The government’s commitment to facilitating affordable housing is demonstrated by concrete results, President Nikos Christodoulides said on Tuesday as he laid the foundation stone for the Adonis III project in Polemidia, Limassol.
“Our policy is based on a comprehensive framework, very specific plans, and I’m genuinely glad that we can deliver tangible results,” the president said.
In his remarks, Christodoulides underlined the government’s efforts to tackle what he called a housing challenge facing not only Cyprus but much of Europe.
Undertaken by the Land Development Corporation (Koag), the Adonis III development features 29 three-bedroom semi-detached homes.
The contractors are A. Aristotelous Construction Ltd.
Prices for the homes range from €263,000 to €320,000. The first application period for interested buyers covers June 1 to August 31.
According to Koag chairman Theseas Ioannou, the prices are more than 20 per cent below going market rates in Limassol.
The project forms part of a broader government drive to increase affordable housing stock across the island.
“The project we are inaugurating today is yet another example of what can be achieved when you have a plan and clear political will,” Christodoulides said.
The government has accelerated licensing procedures, invested in state land, and introduced incentives aimed at boosting housing supply.
Among the measures already underway are plans for 500 affordable homes for young couples across Cyprus, as well as partnerships with private developers expected to deliver more than 2,500 housing units over the next two years.
“Housing is high on our priorities,” the president said, adding that the government is continuing to invest resources and develop new policies to address the housing crisis.
He also referenced nearly €200 million in housing-related support measures over the past two years, benefiting more than 5,600 people.
Christodoulides recalled that the government had moved quickly to restore funding streams for Koag, a semi-governmental public organisation tasked with addressing the housing needs of low- and middle-income individuals and families.
The government had to find new ways to fund Koag, which previously had relied on proceeds from the now-defunct citizenship-by-investment programme.
Between 2019 and the programme’s cancellation in late 2020, the rules required each citizenship applicant to make a mandatory, non-refundable €75,000 donation to Koag to finance affordable housing schemes.
Between 2019 and 2020, the fees injected millions into Koag’s affordable housing and student dormitory projects.
The Larnaca district government (EOA) on Tuesday announced a water outage in parts of Pano Lefkara between 7am and 3pm on Wednesday due to improvement works on the water supply networks.
“[Consumers are urged] to be particularly careful in their water use, in order to be able to satisfy their needs from the water they store in the private tanks of their premises,” the EOA said.
Questions over the responsibility of a senior social services official in the handling of the case of 14-year-old Stylianos Constantinou dominated proceedings before the Nicosia district court on Tuesday, as defence lawyers challenged evidence regarding alleged omissions preceding the teenager’s death in 2019.
The hearing centred on the cross examination of criminal investigator Andreas Andreou by lawyer Costas Nikolaides, who represents the fourth defendant, a social services officer accused in connection with the case.
Defence arguments focused on whether the official exercised any direct responsibility over the handling of the Stylianos file and whether evidence supported allegations that she failed to fulfil supervisory duties.
Nikolaides argued that the head of the Latsia welfare office had previously acknowledged giving instructions directly to another accused welfare officer regarding the case, while making no reference to the fourth defendant.
He submitted that the office head maintained direct access to the file, monitored developments and informed senior management, making her the primary authority responsible for the case.
Andreou disputed that interpretation, maintaining that the defendant’s role as coordinator meant she should have been informed about the matter and exercised oversight of subordinate officers.
He told the court that her participation in a meeting concerning Stylianos demonstrated knowledge of the case and involvement in its management.
The defence further argued that the defendant’s presence at the meeting resulted from instructions received through the administrative hierarchy rather than from any operational responsibility for the case itself.
Andreou responded that she attended because she possessed knowledge of the matter and acted as an intermediary supervisory officer.
During questioning, Nikolaides pointed to official records prepared by another accused welfare employee which, he argued, contained no references to the fourth defendant.
The only exception concerned discussions relating to preparations for a multidisciplinary meeting at the Education Ministry.
Andreou maintained that, as coordinator, the defendant should nonetheless have been aware of developments involving the family.
The court also heard that Stylianos’ family was not being supervised as a public assistance case.
When asked on what basis charges against the fourth defendant had been brought, Andreou replied that the allegations related primarily to omissions rather than direct actions.
Nikolaides argued that no evidence demonstrated a “conscious, subjective or deliberate decision” by his client to act, or fail to act, in disregard of any duty connected to the case.
Andreou rejected that assessment, telling the court that deliberateness arose from “wilful blindness” to problems that were known to exist.
The proceedings form part of wider criminal cases arising from the death of Stylianos in September 2019 and ongoing scrutiny of the actions of welfare authorities and police before his death.
Earlier stages of the case revealed that independent investigators had recommended prosecutions against multiple police officers, including police chief Themistos Arnaoutis, although the legal service later concluded there was insufficient evidence to support criminal charges against them.
The fire brigade on Tuesday afternoon responded to two fires in the area of Dali and Paleometocho in the Nicosia district.
“We responded and are operating with four staffed fire engines from the Nicosia fire stations,” said fire service spokesman Andreas Kettis.
According to Kettis, the first fire broke out in bales of hay loaded onto a truck in a livestock area of Dali, while the second fire broke out on eight acres of dry grass and wild vegetation in the area between Paleometocho and Kokkinotrimithia.
Both fires have since been brought under control.
The Limassol criminal court on Tuesday sentenced a 24-year-old man to life in prison for the murder of two men in Limassol in 2024.
The man was found guilty of committing a double murder of 39-year-old Andreas Kouzoupis and 38-year-old David Chmelar from Slovakia, who were found in a charred vehicle off the Parekklisia-Kellaki road in July 2024.
The trial of the case continues with a second defendant, a 20-year-old man, who also faces charges of premeditated murder of the two men.
An official autopsy on the bodies of the victims later revealed that the two men had been shot in the head before the vehicle was set ablaze.
Friends of the Earth Cyprus will host Climate Justice Week from Wednesday to Monday, featuring free workshops, discussions, forums and cultural events to promote environmental democracy and social participation.
The organisation said the initiative comes at a time when democracy, environmental protection and rights are facing increasing challenges.
Climate justice extends beyond environmental issues to include those most impacted by the climate crisis, their representation in decision-making and the distribution of resources.
The programme will include workshops on environmental democracy, policy discussions, climate justice forums, cycling events and documentary screenings.
Organisers aim to unite civil society groups, youth, academics, experts, the public and local authorities to share ideas and develop proposals on environmental democracy, energy justice and mobility justice.
All events are free, but prior registration is necessary.
Friends of the Earth Cyprus stated that these activities are part of broader efforts to enhance public involvement in environmental decision-making and promote dialogue on sustainable development.
Climate Justice Week is organised through EU-funded projects, with support from international and local partners, and backing from the Plato programme to strengthen civil society and democratic participation in Cyprus.
The full programme and registration details are available through Friends of the Earth Cyprus.
The trial of the theft of documents from the central prisons got another adjournment on Tuesday, as it emerged that the prosecution had not submitted to the court all the documents previously indicated.
At an earlier hearing, Nicosia criminal court had instructed prosecutors to share with it some 2,900 documents, so that the court can decide if these documents may be disclosed to the defence.
Prosecutors had withheld these documents, arguing they were classified and therefore their disclosure might jeopardise public security as well as attorney-client privilege.
With the defendants insisting on full access, the court had earlier ruled that it will take it upon itself to determine which documents are classified or secret.
The trial is still in the discovery stage. Discovery is the pre-trial process where opposing parties exchange information, evidence and witness lists to prevent ‘trial by ambush’ and narrow disputed issues.
Subsequently prosecutors handed over to the court most of the documents, but on Tuesday it transpired that around 440 had yet to be handed over.
The lead prosecutor apologised to the court, citing miscommunication with the police, who hold the documents.
The defence protested at the new delay, but the court accepted the prosecutor’s excuse and granted a few more days for the delivery of the rest of the documents.
As such, the next hearing was set for Friday.
The eight defendants have yet to enter a plea. Their lawyers want access to all the material before their clients plead innocent or guilty.
On trial are the former director of the prisons Anna Aristotelous, former vice-director Athena Demetriou, five prison wardens and a former employee of the prisons who is now a police officer.
The indictment includes conspiracy to commit a felony, abuse of power, violation of official confidentiality, personal data processing offenses, theft by a civil servant, violation of the security rules for classified documents and illegal possession of property.
The documents cache was found in April 2025 in the house of a chief prison warden. There were approximately 48,000 documents.
Police had been searching the premises as part of an investigation into a different case.
Many of the documents are marked ‘confidential’ and ‘secret’ and are believed to have been removed illegally from the prisons between November and December 2022.
Aristotelous was serving as director of the central prisons at the time of the alleged unlawful removal of the documents, before leaving the post in late December 2022.
The European Commission said on Tuesday it was examining reports of interference with aircraft carrying European defence ministers to Cyprus, while remaining in contact with the government.
Speaking during the Commission’s daily briefing, European External Action Service spokeswoman Anita Hipper confirmed Brussels was aware of the matter and had begun gathering information.
“We have seen the reports and are of course aware of the issue,” she said.
“We will examine exactly what happened and of course we will be in contact with our counterparts in Cyprus.”
The incident occurred on Sunday as aircraft carrying Greek Defence Minister Nikos Dendias, together with the defence ministers of France and the Netherlands, travelled to Cyprus to attend the informal meeting of European Union defence ministers in Nicosia.
According to the government, communications directed at the aircraft originated from the control tower at Tymbou (Ercan) airport in the north, while Turkish fighter jets were also observed operating in the area.
The government confirmed that aircraft carrying the Greek, French and Dutch ministers were affected and said the matter would be raised through the appropriate diplomatic channels.
Government spokesman Victor Papadopoulos said that Cyprus would “denounce all of this competently where appropriate”.
President Nikos Christodoulides described the actions as unacceptable.
“There is absolutely no excuse,” he said, adding that the incident involved aircraft from EU member states and reflected “a revisionist approach”.
Turkey subsequently rejected allegations that its aircraft had harassed ministerial flights.
In a statement issued on Monday, the Turkish Presidency’s communications directorate said reports claiming Turkish fighter jets had interfered with aircraft carrying European ministers were false.
However, Ankara confirmed that two F16 fighter jets had taken off after what it described as “aircraft entering the airspace” of the north.
According to the Turkish statement, the fighters were scrambled “as a precaution” and carried out their mission within what Ankara described as the airspace of the north.
Turkish authorities maintained that their aircraft did not enter government-controlled airspace and did not interfere with the flights in question.
The incident took place as Cyprus hosted the informal council of EU defence ministers during its EU council presidency.
The matter was discussed among ministers attending the Nicosia meeting, although EU foreign policy chief Kaja Kallas did not publicly comment on the incident during her remarks following the gathering.
A 59-year-old man lost €90,000 after falling victim to an online car sale scam, police said on Tuesday.
The man recently spotted a vehicle advertised for sale on an online buying and selling platform and contacted the company that appeared to be offering it.
After discussions with the alleged seller, he agreed to purchase the car for €90,000, a price that included transportation costs from another European country to Cyprus.
The man subsequently transferred the money to a bank account in a third European country, following instructions provided by the supposed sellers.
However, after carrying out further checks online, he discovered that the company was not genuine and that he had been deceived.
The case was reported to Limassol police on Tuesday and is being investigated by the financial crime investigation office.
Police urged the public to exercise caution when conducting transactions online, particularly when dealing with unknown individuals or organisations.
Consumers should verify sellers’ identities and legitimacy before making payments and be cautious of large money transfers to foreign accounts.
This warning follows ongoing reports of online fraud involving fake sales, investment schemes and other scams.
The council of ministers on Tuesday approved the allocation of an additional 3.5 million cubic metres of water for irrigation, with 2 million cubic metres allocated for the wider Paphos region and an additional 1.5 million cubic metres for the southern conveyor project.
The agriculture ministry said the revision of the distribution of water reserves by region was based on updated hydrological data, following an assessment of actual water supply and irrigation needs in the respective regions.
According to the ministry, the total water quantities for 2026 were set at 121.7m cubic metres for general water supply and an additional 41.2m cubic metres for irrigation.
The decision is part of the new strategic management framework to address water scarcity for the next three years, set to ensure water safety and reserves.
In its overall effort to ensure water safety, the government has proceeded with several measures including the installation of desalination units, measures to reduce water losses in the networks, as well as the utilisation of reclaimed water, all of which are aimed at covering the needs of both residents and the agricultural sector, the ministry said.
Police are searching for a 54-year-old man after the reported theft of jewellery worth nearly €10 million, according to a complaint filed with the Limassol police on Tuesday.
The owner of a foreign jewellery company told police he had handed over jewellery valued at €9.882 million to the suspect for sale to potential buyers.
The two men had reportedly worked together in the past.
A meeting had been arranged on Monday evening for the suspect to provide an update on the sales.
However, he failed to attend and could not be contacted despite repeated efforts.
Following the complaint, police secured a court warrant for the man’s arrest.
Honestly, I’m starting to wonder if I’m wasting my time.
I like Go, but web development in Go still feels too verbose when you have framework like svelte. Most options either feel too backend-only, too manual, or they push you back into react and similar stack.
So I started building with this :
Go components
server-side rendering
simple syntax
minimal JS
Go-native tooling
Freaking compiler
The frustrating part is that building a framework is a lot of work, and I’m not sure if Go developers actually want this kind of thing.
Would a Svelte-like framework for Go be useful to you, or am I solving a problem most Go devs don’t care about?
I recently started learning more about Go concurrency and goroutines, and while reading about worker pools and distributed systems, I came across video transcoding pipelines and CDN delivery. That led me down a rabbit hole, and I decided to build a small video transcoding prototype as a learning project.
The project turned out better than I expected. Right now, users can upload a video, a Go backend accepts the upload, and FFmpeg generates multiple resolutions concurrently using worker goroutines. I containerized it with Podman and got the basic pipeline working end-to-end.
Now I'm thinking about expanding it into something more realistic, and that's where I'm stuck architecturally.
My understanding is that large-scale video transcoding services become expensive because of:
One idea I had (which may be terrible) was:
The motivation is to reduce server-side compute costs and avoid running expensive transcoding workers.
I'm trying to understand whether something like this is actually practical. Are there existing architectures, frameworks, or projects that use client-side workers for heavy media processing? I've heard of FFmpeg WASM but haven't explored it deeply yet.
I'd appreciate any resources, articles, open-source projects, or architectural suggestions, I kinda took this as my hobby project now since its my university vacations.
Hi there,
I've started learning go and I'm actually interested in game dev, so my question is what games have you built with go. Need inspiration.
I used prisma and drizzle in js/ts world and im bit confused with golang. Please help me
I tried out go generic methods with gotip 1.27. I wrote a database client library wrapping sqlx, providing CRUD, Select, Get using generic methods. Wrote down my thoughts and explanations for interface use and how it applies (or doesn't apply) to generics. Please, enjoy the read.
Hey r/golang,
A while back I posted about GoPdfSuit a PDF engine I was building to push my Go skills beyond the CRUD work I normally do. The support from this sub kept me motivated, and the project is nearing 500 stars on GitHub, so thank you.
I wrote up everything I learned in a detailed article. Some highlights Go devs here might find useful:
sync.Poolmemclr (GC zeroing memory) was eating 49.7% CPU profiling caught what code review never couldIf you're doing performance work in Go or just want to see what systems-level challenges look like outside typical feature development hope it's useful.
Repo: https://github.com/chinmay-sawant/gopdfsuit
Link in the comments ! (Due to reddit filters not able to attach it)
So me (learning programming) and my 2 cousins (both 3D artist and one new to programming) are planning to make a 3D platformer on Unity. Something like Spyro but more like Pumpkin Jack. So was wondering if making a GDD will help as I can share the vision to them? We plan to begin this fall on the project.
| My first steampage is done, after many feedback I received from all over social media, I finally decided to stick with a description and a trailer. I edited it so many times I could even count to fifty and still see the changes while I scroll down on the dashboard. And yet, I'm still afraid this won't have an organic growth, because all my wishlists are basically not organic traffic, at least 90% of them. I also had a very low views to wishlist convertion, mostly 1,5%. This is not really a mascot horror, but rather a parody. And is a Visual Novel, so I guess it doesnt have much appeal. Still, its finished, so if you want, give me some feedback and tell me what you think! https://store.steampowered.com/app/4702610/Crimson\_Animatronic/?beta=1 [link] [comments] |
I went on RedNote, and find out you need Banhao (版号) for launching a monetized game in China. It's basically an identifier you get after registering your game with the country. Or else you might get into trouble (banning your game, fines, etc). I don't know if it's true for indie games.
Can anyone with experience tell me if it's true, and do you ever get into trouble on the Chinese market?
In late 2024, I started Iris Dissolution with a team of five people. By mid-2025 the project had become mine to finish alone. I kept going.
It's a fixed-camera survival horror. Resource management, puzzles, combat. The protagonist Iris is searching for her lost brother through environments that get increasingly surreal, as she tries to overcome grief and loss, which are the central themes of the game.
The demo launched on June 1st following the Horror Game Awards' Midsummer Night's Scream showcase. Here's the breakdown:
The spike on the graph corresponds to said event. By the end of that week the game got ~1000 new wishlist. It is now sitting on almost 5000. I'm really happy about it! I have found these kinds of events have some of the greatest returns.
Over 1,200 people played the demo. Median play time in the first days was around an hour and a half. Steam flagged it as above average. That number surprised me more than the wishlist count honestly. It means people who showed up actually stayed and enjoyed the game.
I also got some kind people who came into the Discord to report issues. They helped me test some hotfixes and I was able to patch the demo twice during launch week thanks to them. That kind of thing isn't something you plan for but I'm really thankful for them taking the time.
Reception was warmer than I knew how to anticipate. Still taking it in a little as I prepare myself to continue working on the rest of the game!
Hi everyone! 24 hours ago I released my steampage and hit 1000+ wishlists and wondered what are the best tips and tricks to use that momentum? Where do you guys post? What kind of posts? More trailer stuff? More in-game footage? I am a little bit scared that I am doing something wrong and wont use the wind in my sails correctly... so if somebody has some advise, that would be great 😄
hi
I've been somewhat working in game engines for maybe 5 or more years. I've coded, done some basic art, and have worked on a bunch of unfinished projects. Because school ended a little bit ago for me, I really wanted to use as much as my time to work on my steam game, but I just really can't get myself to work on it most of the time. I always feel like before I start anything, I'm already just doing something wrong. I feel like whatever I do is going to make everything a mess or just harder or something and that just usually stops me from getting anything done all the time. Every single time I work on something, it ends up being just a bunch or grey cubes deleted, on my computer, or rarely (starting only this year I think) on itch. I just feel so ashamed and crappy for only have "games" like those.
I've taken breaks and I just feel worse for getting nothing done. I've tried making teency weency games but I get caught up on details either way. I've tried working with other people, but I don't know anyone who wants to, I don't want to be a dead weight on a team again, and I have no money to pay other people.
What hurts me the most is that I know I have the experience to do this. I'm not an industry professional or anyone who could ever make something as good as other developers, but I know how to code a bit, I know how to draw stick figures (kinda), and I learned how model, rig, and animate basic dudes. But for whatever reason I either stop myself from making anything at all before starting, or pressure myself way too much.
I'm so sorry that this post is dumb and pretty poorly written, but I really just need some help, nothing life changing, just something. I just really want to have fun making games and to finally actually finish something for once.
thanks.
Hey guys, I've been curious as to how all these games are super fast and optimized when it comes to giving out rewards, the animations, progress and especially in multiplayer modes. What kind of servers do you need? I'm new to game dev and trying to learn what it takes to make good games and the kind of servers they require.
I'm also interested in gacha games and curious about everything. Also if you guys can share resource links that would be awesome. I appreciate it, thanks in advance.
hi, i'm currently prototyping my PS1/PS2-style survival horror game, and i'm a rookie developer who learns everything on my own, so i faced one of the biggest problems for me. i'm planning locations for this game, and i'm trying to build rooms right in the engine (i'm using Godot). but one thing that confuses me during the process is the scales.
so, when i start making a room, i lay out floor, ceiling and walls, then i set some particular size for them, but when i put a fixed camera somewhere in the room, it always feels like the room is too small or the proportions just look weird. and it seems like i can never get satisfied with my room scale. since it's a survival horror game and it has fixed angels, i have to manage to put all the environmental objects and interactable objects so that player could easily find what they need and also never feel like the room size is uncomfortable. so, do you have any advices for this? sorry if my question sounds stupid.
basically title — making a visual novel game with a lot of point and click minigame elements and starting to plan out the demo, my story is split into 6 distinct sections. should the demo be the full first section, a custom mini section just for the demo, or the first section but with some parts shortened so when they playthrough the first time there will be some new content? i’d love to have a demo for the next fest i’m planning to participate in
(also, any examples of story games that did a demo well would be appreciated )
| Hey! I wanted to share a small project I made that actually turned into something more. I originally started it just to get my friend into game development... something small and fun to work on together. It worked, and now we’ve started working on a new project as a team. This is the original prototype that kicked it all off. It’s a small indie game experiment/proof of concept we built together: Would love any feedback Happy to answer questions or talk about the dev process too 🙂 [link] [comments] |
I'm on the team building a game called Warped Universe and we launched into early access about a month ago. We tested nonstop for months making sure everything felt good to go. We had some issues with people crashing, since every machine is different and we just needed more people and scenarios to test with. But the biggest issue we ran into, the one we didn't really see coming, was the simplest most obvious thing to fix. We just didn't catch it until we watched players play over and over and miss it.
Our game starts with a tutorial mission like a lot of games do. You portal into the main station and get pointed toward the tutorial station to start. The problem was we put that tutorial station right next to where you portal in, just off to the side. We figured it'd be obvious, its right there next to you. But it was just off to the right. And straight in front of you is this big shiny star system map with a sun and planets and colors. So players would jump off the starting platform and run right at the shiny exciting looking map. And then over and over people would complain they couldn't find the tutorial. The game kept prompting them to finish it too, every time they finished a different mission, which just made it worse.
You didn't even have to do the tutorial. But completing it gives you your first rewards, and people were getting prompted to do it and couldn't find it. Other players would chime in with "it's back there, where you came in, you ran right by it!" I feel that made people feel even dumber. Because the station was right there as you came in..
It hit our reviews too. The most negative ones were from people the game had made feel dumb. It was a tiny placement issue, but those bad reviews came from people with barely any playtime and a whole lot of emotion. When the design makes someone feel dumb for not figuring it out, they sometimes resent the whole game.
So after watching people struggle with it again and again, we patched it as fast as we could. We moved the tutorial station out from beside the portal and put it straight ahead in your line of sight, even though it's actually farther away now. We put a big label on it, highlighted it, made it as obvious as possible without looking hideous. You don't have to turn or go hunting for it, the second you portal in you know exactly where to go.
After doing that, everything improved. Retention went from 4% up to 30% in a day. Reviews became much more positive, and people could get to the core gameplay without frustration
Most of our testers had already done the tutorial a bunch of times, so we and the testers never really thought about the line of view. We just went to the station to test it. Months of our own testing never caught what a bunch of new players showed us in a day.
I know every dev says players will always do the opposite of what you expected. But I'm curious about the specific ones. What's the most obvious thing you built that players ignored? Did it make players quite or hit your reviews? What did you change to fix it?
weekend project turns into two-year slog. design docs and "maybe later" lists help, but don't solve it.
what actually works for you? How do you cut features without killing motivation or creativity?
if you shipped after scope creep: what clicked? Brutal prioritization or a mindset shift?
I am trying to develop my own game with 3d person melee combat similar to nier automata, but I dont really understand the logic/theory or maybe "method" to actually make it. Like for example I noticed in a lot of games the player character snaps to enemies while attacking but how do they do that? Is it a big hitbox which teleports the player? Or what about enemy behavior, how do the enemies decide it is time to be aggressive, passive, parry, block and so on? 🤔
Brainstorming for game creation.Is there any topic or community where I can share a super raw prototype or even just a game idea and get honest feedback? It sucks to admit, but I’m really new to this and I’m not part of any community yet that could help me out.
Hey there!
In my experience I worked with a world renowed publisher, and I saw a lot of pitch decks being submitted for review, so since I had some private conversations with some folks via DM, I wanted to share some free all around suggestions, which should be hopefully helpful to you if you're developing a game and you're thinking to seek Publishing assistance.
First and foremost: Why working with a Publisher at all?
The publisher pays for your salary for the development time you need to make the game, while it takes ownership of marketing the game and trying to make it reach as many people as possible, and bringing it to its fullest potential paying for QA, playtesting, Mock reviews and freelancers.
it's a investment on you and your project.
To allow this investment it will check usually a pitchdeck and a vertical Slice or a prototype you will submit. They will not look at anything like "Idea sheets" or lore, or stories. Full stop.
Here's the risks and the questions a Publisher has in mind when looking at your material:
- Creative Risk: What's "makes the fun" of your game? What makes it sticky? If I play it for 10 minutes, do I want to pick the controller again and play for another run? Is that something seen before, or it's a clever blend of stuff that already exist, or (rare) is that something really really new?
- Financial Viability: Is the game finacially grounded into reality? Is the development Budget requested (which is Monthly burn rate x Development months + 15%-20% for emergencies) realistic for the type of game and team?
- Commercial Opportunity: Is the audience for this game big enough to create an actual business opportunity? Is this genre crowded or empty? Why would I buy this in comparison to the ten other games that are already discounted?
- Technical Risk: Is there a big technical risk you are not seeing, and / or are you aware of it, or you are underestimating it? Do you have a Mitigation plan or a Plan B? Are you using some weird and / or proprietary technology that might complicate making ports in the future?
- Team and Execution: Can you actually make the game? Are you a nice person to work with and you deal well with your team? Are you reliable to respect the deadlines you are planning for? Is that a solo dev situation (single point of failure type of thing).
That is the core of what goes through a publisher's head when your material lands on their desk. None of it is meant to scare you off, it is just the lens they read everything through, so knowing it upfront puts you in a much stronger spot.
If you have questions, fire away. Happy to answer here in the thread so others can benefit too, or in DM if you would rather keep it private. Either works for me. CYA
Hi everyone,
I'm Adri, a 26-year-old solo game developer from Spain, and last Friday my game was featured at Summer Game Fest.
A few days ago, my game was shown during the biggest gaming showcase in the world in front of millions of viewers. I was introduced by my own name as a solo developer, and the game being presented was An Eggstremely Hard Game, a co-op adventure about two goose parents trying to bring their precious baby egg safely back home without cracking it.
I still haven't fully processed what happened. Out of the thousands of talented developers making incredible games around the world, somehow I was given the opportunity to stand on that stage and share my work with millions of people. It's something I never imagined would happen when I first started making games.
The road to Summer Game Fest was completely unexpected. I announced the game in October last year, and things were already going well. By the end of Steam Next Fest, the game had reached around 40,000 wishlists. I was incredibly happy with that result and honestly thought that was probably as far as the game's visibility would go.
I started creating short-form videos and testing different ways of presenting the game. Originally, I described it as "two geese carrying an egg without breaking it." It worked, but eventually I realized there was a much stronger story hiding underneath.
The game wasn't really about carrying an egg. It was about two parents trying to take care of their child.
As soon as I started presenting it that way, people connected with it much more. Some videos went viral, reaching millions of views, and the game continued to grow week after week.
Then something happened that completely changed everything.
IndieGameJoe shared the game on Twitter, and the post exploded. He also posted an Instagram Reel that reached nearly 8 million views and suddenly the game was everywhere.
Wishlists started growing at a pace I had never seen before, and one of the people who ended up seeing the game was Geoff Keighley.
The next day, I received a DM from him.
I genuinely thought it was a joke at first, but it was real.
He told me he loved what he had seen and wanted to learn more about the game. From that moment on, I started working on a new trailer specifically for Summer Game Fest. I included content that nobody had seen before: new biomes, costumes, and a new four-player mode.
I also came up with an idea that felt perfect for the game: a trailer focused on a couple arguing while desperately trying to protect their baby egg.
Thankfully, Geoff and his team loved the concept.
A few weeks later, I received the news that my game would be featured at Summer Game Fest with a free indie spot. Not only that, but I was invited to attend the event in person in Los Angeles.
Of course I immediately booked the flight, and I'm so glad I did.
Sitting in that theater and watching my game appear on the giant screen was one of the most emotional moments of my life.
Then I heard my own name being announced and I jumped out of my seat.
It was one of those moments that you know you'll remember forever.
After the show, I spent hours reading reactions online and watching streamers react to the trailer.
Some people loved it.
Some people hated it and called friendslop
Others thought I was secretly a millionaire who paid for a spot on Summer Game Fest.
That one made me laugh the most, considering I'm still very far from being rich.
From a wishlists perspective, the impact was incredible.
I entered Summer Game Fest with around 80,000 wishlists, and a few days later, the game had already passed 115,000.
A few years ago, I remember watching indie developers appear on Summer Game Fest and thinking how impossible it seemed.
I remember dreaming that maybe, somehow, one day that could be me, but...Last Friday, it was.
Huge thanks to IndieGameJoe for giving the game the visibility that ultimately put it on Geoff's radar.
And huge thanks to Geoff Keighley and the Summer Game Fest team for giving a small solo developer the opportunity of a lifetime.
Now comes the hard part: actually releasing the game next month, if you want to follow my gamedev journey you are free to follow me on Twitter where I share a lot of stories.
I'll make a bigger post mortem post when the game launches sharing how I did the marketing of my Game so maybe I can help other developers :)
Wish me luck
Thank you for reading, Adri
We’re the developers of Metro Anomaly. I don’t want this post to be about promotion, I mainly wanted to share the wishlist/view numbers for other devs.
Before our first viral video, we had around 150 wishlists after about a month.
Then one of our Reels/short-form videos took off. It currently has around 6.5M views. On the day it reached roughly 500K views, we gained around 300 wishlists that day.
Over time, the overall conversion seems to have increased. Across all our short-form videos, our rough average is now around:
1M views → 700 Steam wishlists
or about 0.07% view-to-wishlist conversion.
Our second big video performed even better in terms of wishlist impact. It currently has around 2.6M views, and on the day it was posted, we saw a spike of around 1,000 wishlists.
Our theory is that repeated exposure helped. When someone sees the game once, they may just scroll past. But when they see another video from the same game later, they might recognize it and be more likely to check the Steam page or wishlist it.
Right now we have around 13,000 wishlists and around 21M total views across all short-form videos.
Of course, these numbers are not a universal benchmark. They probably depend a lot on the genre, hook, Steam page, pinned comment, audience, and how easy the game is to understand from a short clip.
Not a big engine or tool switch, just some little habit or tweak that quietly made everything smoother, the kind of thing you wish you'd started a year earlier. What's yours?
Female dev here.
We surprise-released a major update for our game during the Women-Led Games showcase at Summer Game Fest 2026, which aired on the Game Awards YT channel It was a huge opportunity for us to be part of such a major event of the year.
I noticed the livestream had a significant number of dislikes before the show even started and chat was disabled, so it was hard to tell how people were reacting in real time. But the comments section was active from the start.
I’m not trying to frame this in any specific way, I’m genuinely looking for honest feedback from people who saw the showcase.
If you watched it, I’d appreciate any thoughts, thanks.
I recently launched my indie game on Steam, and I’m hitting a massive roadblock that I honestly don't know how to diagnose.
Leading up to the launch, I spent a lot of time marketing and managed to accumulate a few thousand wishlists (around 2000 US wishlists). I was cautiously optimistic, expecting at least a standard launch-week conversion rate.
However, now that the game is live, the reality check has been brutal. The wishlists are barely converting into purchases—it feels like almost none of those who wishlisted the game are actually clicking "Buy."
Since this is my first time publishing, I’m completely lost. Here is what I’ve observed so far:
For context, the game is a sci-fi survival Roguelite game, blending bullet-hell action and base-building.
Has anyone else experienced people wishlist your game, ignore the demo, and then ghost you at launch? How did you diagnose the root cause or push them over the finish line? I would appreciate any honest feedback.
I'm too new to gamedev to really appreciate everything the modern engines provide us
I'm also too new to gamedev to say "Wow this latest update really made my job easier"
Those of you who have been doing this for a long long time, what are some new things game engines provide that you had to code yourself in the past?
One side note; I'm surprised that alot of techniques still used today were invented back in the early 2000s or even 90s. I always get surprised when I see a certain GAME DEV algorithm in an article from like 2002
Have you ever wanted serde to deserialize the rest of a struct even when one field is nonsense?
No?
Well, okay, I made a crate for it anyway.
serde_field_result gives you Field<T>, which is basically:
MissingValid(T)Invalid(error)So schema drift can be annoying instead of fatal.
Github: gramistella/serde_field_result
crates.io: https://crates.io/crates/serde_field_result
Cargo.toml:
[dependencies] serde = { version = "1", features = ["derive"] } serde_json = "1" serde_field_result = "0.1.0" Example:
use serde::Deserialize; use serde_field_result::Field; #[derive(Debug, Deserialize)] struct ApiRow { #[serde(default)] price: Field<f64>, #[serde(default)] name: Field<String>, } fn main() { let row: ApiRow = serde_json::from_str(r#"{"price":"free-ish","name":"espresso"}"#).unwrap(); assert!(row.price.is_invalid()); assert_eq!(row.name.as_str(), Some("espresso")); if let Some(error) = row.price.error() { println!("bad price, useful response survived: {error}"); } } Tiny caveat: the generic Field<T> does not preserve source positions or the original invalid value. serde does not expose that in a format-agnostic way.
If you are specifically working with JSON and want to inspect the bad value, enable the json feature and use JsonField<T> / BorrowedJsonField<'de, T>:
serde_field_result = { version = "0.1.0", features = ["json"] } use serde::Deserialize; use serde_field_result::JsonField; #[derive(Debug, Deserialize)] struct ApiRow { #[serde(default)] price: JsonField<f64>, } fn main() { let row: ApiRow = serde_json::from_str(r#"{"price":"free-ish"}"#).unwrap(); assert_eq!(row.price.raw_json(), Some(r#""free-ish""#)); } Source positions / line-column reporting would need a more specific span-aware JSON path in the future.
Let me know if anyone finds this useful!
Hey rustaceans : ) (hope am writing it right)
I have been pushing my self to not post or share about anything I am building for past months
I think because of not wanting to show something incomplete or with still work to be done.
I realised today that if I don't share and let other humans witness what I am doing and why, I might as well not do anything - quite dark, but I have been quite low past weeks and months and I have been isolating myself.
Here is to starting not being all day at the terminal and not putting out there my Work-In-Progress, very unfinished, clunky, projects. Not great UX (not yet)
What I want to show, I am calling it Edi. It's a Image Editor. name out of quirky Linux/Unix/GNU naming of cli tools - Editor of Images, image wizard, image enchanter, or whatever rocks your boat
I like photography, a lot. I am also a software engineer by trade. For editing photos, I have been using Darktable, and I love it. But its sometimes just a bit too slow and the app feels heavy in terms of UI. Its super powerful thou, I feel it even goes beyond what Lightroom (from what I remember few years ago)
Since using Darktable, tried vkdt (written in rust :o). and its so daaaaeeemmnn faaaasstttt veewwwwwwuuuuummmm... But, daemn, it was awkward. The node system, not something I am used to and tried it for a few days to try get something out of it. Darktable worked for me so didnt have enough intention to learn. I think I might have gone at vkdt with the wrong mindset or expectations. If used right, im sure it kicks well
After a few months of not doing so much photography, a few health problems (still and worse), I wanted to try and build my own Image Editor which lets me say in words what I want done without having to go and dial knobs and buttons. This idea, knew would involve using AI models. Didnt want to use cloud inference, wanted it all local, fast and efficient.
... which leads me to the screenshot you can see with that yellow zone with a "(1)" - that is a mask, created out of just a text prompt, totally offline. Not perfect, doesnt cover all the chess pieces. Prompt was "all the chess pieces, both black and white". Currently using two models - one says which pixels are confidently inside the object/s, the other tries to connect and grow those pixels to edges of objects, together they are less than 1.2 GiB.
It's not just an image editor I want to build. I want to build a whole pipeline, from arriving home with my camera, to delivering photos - which is something I find really hard to get through. I live for the photos, and for expressing myself with image and words, so I wanted to be able to talk to the picture. That, is Edi.
I want to build something that outlasts me, and makes someone experience shivers (i think will make sense in a future post).
Cheers
Any ideas or feedback are welcome. and if you are a photographer (as a "bread in table" work or not), feel free to reach out if you want to share something and maybe help steer the project.
(if you have read until here, thank you. if you havent or read diagonally, still thank you. Thank you for witnessing my words, and my wonky tool. i hope i will post more updates soon)
Hi,
Github: https://github.com/vaibhav-mattoo/cxt
The main idea here is to select entire directories and specific files and cxt aggregates everything into one clean block in your clipboard, automatically wrapped in XML tags with file paths, so whatever you paste it into has the full context of your codebase (where the file paths and XML tagging make the codebase context easier for agents to understand). There's a TUI picker allowing you to select files and directories to copy interactively, and piping works.
Available on cargo, homebrew and the AUR (see README.md).
Another feature that I found useful in multi-language projects is using the --lang flag to extract relevant files from only a specific language in your context. So cxt --lang rust src/ would extract only the .rs and the Cargo.toml files in your repo, and something like cxt --lang bash * would only include the scripts in your repo in your context.
Side note: I've been using this almost everyday for a year and have made several improvements over time, including a redesign that streams the code files directly into the clipboard, so the cxt process uses O(1) memory regardless of how much code you are copying. There are some other ideas like the directory walker running in parallel while copying the entire directory, before streaming them sequentially to the writer to the clipboard. Binary files are detected with a fast scan before reading content to skip them. Had a 300x improvement in amount of RAM used and 4x improvement in the time to copy very large codebases compared to the naive approach of building a large string of all the code with the tags in memory and putting it into the clipboard.
replay allows you to record a sequence of commands, and wraps them into something you can rerun with variables, conditions, and step descriptions. So the same workflow works for staging, production, or your laptop just by changing a flag. Every step can have a short description so the workflow also serves as documentation for your team or future you.
Why not history, fzf,script. history and fzf are usefull to find a single command at the time. script records raw terminal output that you have to manually select to obtain somethng useful. you write a script once everything works while replay create these scripts when you are still experimenting and iterating on a sequence of commands.
Claude helped for some refactors and Mistral was used mainly for some ai assisted coding.
[https://github.com/Ra77a3l3-jar/replaySh\](https://github.com/Ra77a3l3-jar/replaySh)
[https://crates.io/crates/replaySh\](https://crates.io/crates/replaySh)
I'm designing the architecture of a memory manager for an interpreter, and want to design the abstraction in such a way that it is impossible for me to write memory unsafe code as the interpreter's implementer, from outside of the memory manager code itself.
I want the memory manager to do mark and sweep garbage collection, so I'm gravitating towards a design based on two kinds of handles: * a RootedHandle usable from the program's unmanaged memory * a ManagedHandle storable in the managed memory area.
each RootedHandle instance corresponds to a count of a reference counter (root count) in the corresponding object, and each ManagedHandle corresponds to a count of a second reference counter. An object is deallocated if the second and first reference counters are both zero, or during a sweep if it wasn't marked. marking starts from the objects that have a non-zero root count.
The main issue I'm trying to resolve is that I want to forbid storing a ManagedHandle on the stack (or in unmanaged memory in general) without promoting it to a RootedHandle first, because if a mark and sweep happens while the ManagedHandle is deleted from the managed memory but is still on the stack, and I then try to promote it, I'll have a use after free.
I can vaguely imagine the construction a ManagedHandle from a RootedHandle requiring a &mut ManagedHandle (as well as some other way to allocate an empty ManagedHandle directly on the heap) but can I guarantee that nobody will do something like mem::swap() the ManagedHandle out, then? I guess that still requires them to have one to put back. I'm having a hard time convincing myself that this works.
Can this promise be encoded in Rust's type system?
I got tired of hunting for the right ssh -i/-J/-p … invocation across a pile of servers, so I built sshelf: save each host once, fuzzy-search, Enter to connect. The premise is that it never reads or writes ~/.ssh/config (one explicit read-only import aside). It keeps its own TOML host DB and builds the ssh argv from it, plain flags only, no temp -F config files.
The Rust bits that were fun:
exec() handoff (CommandExt::exec): tear down the TUI, replace the process with ssh, and you land back in your shell on logout. Frecency state has to be persisted before the exec, since nothing runs after it. A RAII guard plus panic hook restores the terminal on every other exit path.Jump hosts (-J), tags, frecency ordering. MIT/Apache, macOS + Linux, x86_64 + arm64. It's v0.2.0, so early; feedback and bug reports very welcome. Known limits: no Windows (exec is Unix-only), jump hosts need key/agent auth for now, and password auto-supply wants OpenSSH 8.4+ at runtime.
brew install max-rh/tap/sshelf
Starting with v0.7.0 (to be released later this week) the ability to reverse proxy additional services will be integrated directly into ordinary.
rustls-acme)br, zstd, gzip and deflatex-request-id propagation + support for via, forwarded, and x-forwarded-* headersordinaryd instance)axum and reqwest as the forwarder Hello r/rust .
I'm facing a strange issues with connections to my Rust written custom proxy server of mobile clients.
I have idle connection timeout, which works fine, at least when I use
openssl s_client -connect 127.0.0.1:443 -quiet telnet 127.0.0.1 443 and do nothing the connection is terminated in ~1 minute.
But seems the situation is different with real life mobile clients.
I guess because of network change, or something else blizzard specific to mobile networks is happening, client connections are so called "half dead", when the app lost connection have zero active session, but at OS level ss reports continuously increasing amount of ESTABLISHED connections.
here is what ss show, I have removed IP address for privacy
ss -t4ano 'sport = :443' State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 4096 0.0.0.0:443 0.0.0.0:* ESTAB 0 0 MYIP:443 CLIENT01:13885 ESTAB 0 0 MYIP:443 CLIENT02:9638 ESTAB 0 0 MYIP:443 CLIENT03:54098 ESTAB 0 0 MYIP:443 CLIENT04:53252 ESTAB 0 0 MYIP:443 CLIENT05:1699 ESTAB 0 0 MYIP:443 CLIENT06:54338 ESTAB 0 0 MYIP:443 CLIENT07:9627 ESTAB 0 0 MYIP:443 CLIENT08:29291 ESTAB 0 0 MYIP:443 CLIENT09:1908 ESTAB 0 0 MYIP:443 CLIENT10:22376 ....... ESTAB 0 0 MYIP:443 CLIENT100:2442 ESTAB 0 0 MYIP:443 CLIENT101:37654 I do not see timers on ESTAB connections ?
Anyone built a Socket listener on Pingora or pure Sockets with timers reporting to kernel ?
I'm looking for a way to build HTTP(s) listeners so it reports kernel about connection and turns on the idle timer.
The environment is: Pingora, Tokio, rustc 1.96.0 .
Many thanks for help .
I just released steamie, a Steam client that runs entirely in your terminal. It's built with Ratatui and speaks Steam's connection-manager protocol directly, so logging in doesn't need a Web API key (QR-code sign-in by default).
What works today: - Library browsing with Steam-style type filters and search - Per-game playtime and achievements, pulled natively over the protocol - Real-time 1-on-1 chat over the `FriendMessages` service - Launching games: Steam starts silently in the tray, plus an experimental no-Steam mode for DRM-free titles - News from your library, recently-played, and wishlist The part I think this sub will care about most: the protocol layer is its own open-source crate, steam-cm-protocol (crates.io). It speaks to Steam's CM servers over WebSocket and gives you higher-level async (Tokio) APIs: auth (QR, credentials + Steam Guard, refresh-token reuse), friends and real-time presence, 1-on-1 chat with typing/history, library loading, achievements, PICS metadata, and unified service calls. No Steam client or Web API key needed.
The API is a clean three-stage session model (SteamClient::new -> begin_auth -> run with command/event channels). A QR login plus a library load is about 30 lines. MIT-licensed, 0.x. steamie is its first consumer but the crate stands alone, so if you want to script Steam or build your own client, it's the foundation.
steamie itself is a small Cargo workspace on top, no Electron, no bundled browser engine, no OpenSSL/X11 needed (rustls + zbus).
cargo install steamie to try it. Repo: https://github.com/LargeModGames/steamie
Happy to answer anything about the protocol reverse-engineering, the session/channel design, or Ratatui specifics.I just released steamie, a Steam client that runs entirely in your terminal. It's built with Ratatui and speaks Steam's connection-manager protocol directly, so logging in doesn't need a Web API key (QR-code sign-in by default).
The other day, I found that there are quite a few crates for parsing, formatting, and/or representing byte sizes--but none satisfy my concrete use cases.
Spent a few hours making my own at https://github.com/fast/bsize, and at the very beginning, I wrote a section talking about "Why Yet Another Byte Size Crate?"
Of course, https://xkcd.com/927/.
Below are the rationales. I'd be open to listening to any comments if you are working with byte sizes and want friendly displays and APIs.
The most commonly used crate for formatting byte sizes is humansize. It provides a format_size/format_size_i function that formats a byte size into a human-readable string.
This function works well. However, when you want to define a struct that represents a byte size, humansize does not provide a type for that.
I have a large set of code looking like this:
const BASE_BLOB_INDEX_SIZE: usize = 4 * 1024; // 4 KiB const BASE_BLOCK_SIZE: usize = 16 * 1024 * 1024; // 16 MiB const RESERVED_MEMORY: usize = 256 * 1024 * 1024; // 256 MiB const RESULT_SIZE_LIMIT: usize = 8 * 1024 * 1024 * 1024; // 8 GiB I want them to be:
const BASE_BLOB_INDEX_SIZE: BSize<usize> = BSize::kib(4); const BASE_BLOCK_SIZE: BSize<usize> = BSize::mib(16); const RESERVED_MEMORY: BSize<usize> = BSize::mib(256); const RESULT_SIZE_LIMIT: BSize<usize> = BSize::gib(8); So you don't have to multiply the numbers by hand and rely on comments to indicate the units. This also makes it easier to change the units later if needed.
What's more, when you want to parse a byte size from a string, humansize does not provide a function for that either.
The parse-size crate provides a parse_size function that parses a byte size from a string.
Similarly, when you need to define a struct that represents a byte size, or when you want to format a byte size into a human-readable string, parse-size does not provide functionalities for either of those.
Besides, parse-size supports parsing sizes that have an exponential notation, such as 1e6 for 1 million bytes. This crate does not support that in the FromStr::from_str implementation, as it is not a common way to represent byte sizes. If it proves useful, this crate may add a standalone function for that in the future.
The bytesize crate provides a ByteSize struct that represents a byte size and implements Display and FromStr for it.
I was more than happy to try bytesize at first. However, I found that it does not provide a way to specify the underlying integer type for the byte size. It uses u64 internally, while most of the constants shown above are of type usize. This means that I have to convert between u64 and usize frequently, which is not ideal. See this issue for more details.
What's more, to support calculations between BSize and numeric types, this crate simply implements a BSize::with function and avoids implementing arithmetic traits. The latter would cause confusion, like what result type should be used for ByteSize + u64. However, BSize implements arithmetic traits for calculations between BSize and BSize, which is more intuitive and less error-prone.
let result = ByteSize::kib(4) + 64; // Is the result type ByteSize or u64? Why? let result = BSize::<u64>::kib(4).with(|b| b + 64); // Clearly the result type is BSize. let result = BSize::<u64>::kib(4).0 + 64; // Clearly the result type is u64. There is no Unit as well. To obtain a constant for a specific unit, you can use BSize::<u64>::kib(1).0 and this can be resolved at compile time.
Finally, the following issues in bytesize have been resolved in this crate:
bsize, the default Display implementation uses B always. This forces the user to customize the formatting if they want by calling BSize::display, and thus it reduces confusion on APIs.bsize, both parsing and formatting functionalities are available in no-alloc environments.repo:- https://github.com/OscarPastry/trapsh
Give me feedback to improve upon it please.
It's been four years since I've announced findlargedir tool here and I wanted to announce a new rather major release 0.12.1 with many optimisations for different filesystems and much better directory size growth per node estimation.
As a quick reminder, that's a tool written specifically to help quickly identify pathologically large directories without attempting to count all directory entries. Reason for this is that during such traversal it is typical to observe that process accumulates long D (TASK_UNINTERRUPTIBLE) time during directory traversal, caused by reading many directory blocks serially on in batches and every such uncached block is one D-state sleep (~ms on SSD, ~10ms on HDD). Even worse, such processes are typically unkillable (many block reads, each potentially sleeping on wait_on_buffer). Some filesystems handle large directories better (XFS, ZFS), but very large directories are still a application design smell.
We have many storage systems, totalling in roughly 400PB and we have had customer directories growing to large (1M entries) and very large (10M+ entries) sizes: this tool has helped us easily spot these situations.
Previously people have compared this tool to ncdu, but the design and usage is rather different. This tool will calibrate and estimate directory node per entry growth and actively avoid traversing such directories; idea is not to get disk usage, but to find specific problem as fast as possible.
Hi. My team made a little test framework for async-graphql servers. We have been using it at work for 2 years, and recently open-sourced it. Today I published it on crates.io. Enjoy!
Hi!
I've been working on oximo, a mathematical optimization modeling framework for Rust (https://github.com/oximo-rs/oximo).
The library lets users formulate and solve optimization problems in Rust using a high-level modeling API, similar to tools like Pyomo (Python), JuMP (Julia), or GAMS.
oximo supports modeling and solving: - Linear Programming (LP) - Mixed-Integer Linear Programming (MILP) - Quadratic Programming (QP) - Nonlinear Programming (NLP) - Mixed-Integer Nonlinear Programming (MINLP)
Example: ```rust let m = Model::new("transport"); let x = m.var("x").lb(0.0).build(); let y = m.var("y").lb(0.0).ub(4.0).build();
m.constraint("c1", (x + 2.0 * y).le(14.0)); m.constraint("c2", (3.0 * x).ge(y)); m.constraint("c3", x.le(y + 2.0)); m.maximize(3.0 * x + 4.0 * y);
let result = Highs.solve(&m, &HighsOptions::default())?; ```
I'd like to get feedback on the API design, modeling ergonomics and solver integrations you'd like to see. Future releases will have integration with more solvers, autodiff, GDP, Polars integration, and better docs.
Contributions, bug reports, and feature requests are welcome.
Links: - GitHub repository (MIT OR Apache 2.0): https://github.com/oximo-rs/oximo - Crates: https://crates.io/crates/oximo - Docs: https://docs.rs/oximo/
Hey,
I’m new to programming. I know the basics (variables, data types, control flow, functions, etc.), but I haven’t built any real projects yet.
I’ve been trying to choose a backend language and narrowed it down to Go and Rust. I’ve only done some basic research and watched a few intro videos on both.
At first, I was leaning toward Go because it seems simpler and more beginner-friendly with a “batteries included” feel.
But the more I read, the more I got interested in Rust—especially because of its performance, memory safety, and how much people seem to value it long-term.
Now I’m a bit stuck.
For someone at my level, would it make sense to start directly with Rust for backend development, or would Go still be a better first step?
I’m okay with a learning curve—I mainly want to choose something solid that I can grow with and build real backend projects in.
Would really appreciate your thoughts, especially from people who started Rust early.
TL;DR:
Beginner choosing between Go and Rust for backend. Rust looks powerful but harder—worth starting with it directly or start with Go first?
Edit : Thank you all. I really feel a little bit ashamed for this kind of silly question. I apologize if I did anything wrong. However, I have decided to go with Go, and I also plan to explore Rust later.
Hi r/rust,
I’ve been working on Merman, a headless Rust implementation of Mermaid for parsing, layout, and rendering diagrams without needing to spin up a browser or a JS runtime.
GitHub: https://github.com/Latias94/merman
Playground: https://frankorz.com/merman/
I recently cut v0.7.0, which is the first release I feel comfortable sharing more broadly. Side note: Zed currently uses a patched fork of Merman for Mermaid rendering in the editor, which has been a great stress test.
A quick overview:
merman-rustdoc, a proc-macro crate that renders Mermaid fences in rustdoc comments into inline SVG during cargo doc, without injecting Mermaid JavaScript into the generated docs.The goal is not to replace Mermaid.js in the browser. This is mostly for native apps, text editors, CI pipelines, preview tools, and doc generators where embedding a JS engine just to draw a flowchart is heavy and awkward.
I keep Criterion benchmarks for regression tracking, but I’m not pitching this mainly as a “faster Mermaid”. Parity and predictable headless output are the top priorities right now.
It’s still early, and Mermaid’s surface area is surprisingly massive. I’d love feedback from anyone who needs diagram rendering in Rust/native apps. If you have weird Mermaid examples that usually break renderers, please throw them my way.
Full Disclosure regarding AI usage: To be fully transparent, the core implementation was heavily bootstrapped with AI coding tools. Mermaid has a massive surface area, and achieving strict, decimal-point parity across all its diagram types, quirks, and edge cases requires an overwhelming amount of boilerplate parsing and layout logic. Writing all of that entirely by hand would have been an unrealistic time sink.
Instead, I used AI as a force multiplier to handle the brute-force implementation, while I focused my engineering effort on strict verification: building the infrastructure, setting up the 3,600+ parity test fixtures, maintaining the CI/CD pipelines, and writing the regression benchmarks. The codebase works deterministically, but because of this approach, you might spot some non-idiomatic Rust in the source. PRs and architectural feedback are very welcome!
So I'm wondering if there's any comparison table or benchmark for scripting languages in Rust (like Rhai, Rune, Lua via mlua crate). I'm curious about these properties of these scripting languages:
Please share your thoughts, thanks!
Hi guiz. Im a firmware developer primarily working on low level MCU in C. Im trying to change job. But since my experience is very confined to low end MCUs and C and also due to bad job market, I think it would be a tough task. I need to up my game to something like Kernel level i guess. Anyways I thought of learning Rust to add to my profile and what better way that to build your own project.
Checkout Dhwani https://github.com/pronuba66/dhwani a digital audio workstation engine. I started with the core engine, then added a controller (async) to work from a UI thread. To test the engine I also built a small frontend using Tauri
There are many things pending like example ADSR. Right now the project is at a stage where the core engine architecture is somewhat done (lol it will never have an end 😞) and also has few audio nodes like piano roll, oscillator, sampler, filter, mixer, stereo. The architecture is structured in a way its easier for users to built custom audio nodes. Have made my own SPSC and MPSC queues to fiddle around unsafe territory and learn of course.
I used AI for bringing up front end UI and later revised it manually to suite my need. Also taken help from ai for initial documentation.
I would like to hear u guiz feeback
Tips, guidance, bashing etc all welcome.
PS: I accidentally deleted the old post. Thanx u/SirKastic23 for ur comments.
| I got rid of most of the artifacts! Finally figured out the got dang cubic axis The light arcing i'm not sure what it is, yeah it kinda looks like lightning it's definitely not that in actuality it is something to do with octree ray relief No sound yet, I'm still refactoring. Making this modular so I can run other modules separately, I've given my old builds mini-brains and I want to do something similar with this but it has to be done carefully because this is already a very heavy renderer. There's a lot of cool ideas here and yes, definitely world editing, but first I have to figure out solids, collision, macro physics all of which I can't really just force or it will break the engine. I'm already on the emergence path, so I'm gonna keep pushing [link] [comments] |