Apps targeted at US troops contain Chinese and Russian code
More than one-eighth of apps analyzed contained foreign code.
找到 1799 篇相关文章
More than one-eighth of apps analyzed contained foreign code.
GitHub热门项目 | Control what your AI can see. LeanCTX (Lean Context) is the context intelligence layer for AI agents — one local Rust binary that decides what they read, remembers what they learn, guards what they touch, and proves what they save. 60–90% fewer tokens as the receipt. 76 MCP tools, 30+ agents, local-first. | Stars: 3,326 | 14 stars today | 语言: Rust
Building a Decompiler Pipeline in Rust: Why Fission Separates NIR and HIR Decompiler output often looks simple from the outside. A binary goes in. Pseudocode comes out. But between those two points, a decompiler must recover several different kinds of information: instruction semantics register and memory effects control flow stack variables calling conventions data types expressions loops and conditionals readable source-like structure Trying to represent all of this in one intermediate representation quickly becomes difficult. While building Fission , a reverse-engineering and binary decompilation workspace written primarily in Rust, I decided to separate the decompiler pipeline into two main intermediate representations: NIR , a lower-level representation intended to preserve machine semantics HIR , a higher-level representation intended to express recovered, human-readable program structure This article explains why that separation exists, what each representation owns, and why it makes decompiler development easier to reason about. Correctness and readability want different things A decompiler has at least two responsibilities. First, it must preserve the behavior of the original machine code. Second, it must produce output that a human can understand. Those goals overlap, but they are not identical. Consider a simplified fragment of machine-level behavior: tmp0 = RAX tmp1 = tmp0 + 1 RAX = tmp1 flags = update_flags(tmp0, 1, tmp1) A human reader may prefer to see: rax ++ ; The concise form is easier to read, but it omits details that may still matter elsewhere in the pipeline. The flags update could affect a later conditional branch. The operation width may matter. The source and destination could alias. The operation may have originated from an instruction with additional side effects. If the decompiler converts everything into source-like syntax too early, it becomes easy to discard evidence. If it keeps everything at machine level until the final rendering st
GitLab has introduced a new approach to Green DevOps, demonstrating how software engineering teams can measure the carbon emissions generated by their CI/CD pipelines. By Craig Risi
Last month, more than a hundred Stanford students left their own graduation to protest Google’s military contracts and deals with ICE. Two organizers, Amanda Campos and Eva Jones, tell us why.
Every day, the internet quietly convinces us that we're running out of time. A 19-year-old launches...
Gritt is coming out of stealth with $34 million and plan to automate the hardest tasks on construction sites.
Event-Driven Architecture (EDA) is one of the most popular approaches for building scalable distributed systems. Instead of tightly coupling services through synchronous APIs, services communicate by publishing and consuming events. It sounds perfect. Until your consumers start making API calls for every event they receive. At that point, you've reintroduced the very coupling Event-Driven Architecture was supposed to eliminate. This is where Event-Carried State Transfer (ECST) comes in. The Hidden Problem in Event-Driven Architecture Imagine an e-commerce platform. A customer places an order. The Order Service publishes an event: { "event" : "OrderCreated" , "orderId" : "ORD-10234" } Several services subscribe to this event: Inventory Service Notification Service Analytics Service Shipping Service Billing Service Everything looks asynchronous. But here's what actually happens. Order Created Event │ ▼ Inventory Service │ GET /orders/ORD-10234 │ Order Service Notification Service does the same. Analytics Service does the same. Shipping Service does the same. Suddenly, one event generates dozens of synchronous API calls. Congratulations, You've Recreated a Monolith Your architecture now looks like this: Order Service ▲ ┌───────────┼───────────┐ │ │ │ Inventory Shipping Notification │ │ │ └───────────┼───────────┘ API Requests Although events are being used, every consumer still depends on the Order Service. If the Order Service is unavailable: Notifications fail Inventory updates fail Analytics stop processing Shipping cannot continue The event broker isn't the bottleneck anymore. The originating service is. Event-Carried State Transfer Solves This Instead of publishing only an identifier, publish the data consumers actually need. Instead of this: { "event" : "OrderCreated" , "orderId" : "ORD-10234" } Publish: { "event" : "OrderCreated" , "orderId" : "ORD-10234" , "customerId" : "USR-1001" , "customerName" : "John Doe" , "totalAmount" : 249.99 , "currency" : "USD" , "i
GitLab has released version 19.2 of its DevSecOps platform, adding agentic automation aimed at the security and review work that has piled up as AI coding tools generate more code than developers can check by hand. The release, announced on 16 July 2026, brings four features out of beta or into public beta: Dependency Scanning Auto-Remediation, Security Review Flow, GitLab Duo CLI and Custom Flows By Matt Saunders
Welcome to this week's Top 7, where the DEV editorial team handpicks their favorite posts from the...
The tutorial-to-production gap Every RAG tutorial follows the same arc. Load some...
Sony Music Entertainment has filed another lawsuit against Udio, accusing the AI music generator of infringing the copyright of more than 30,000 of its songs, ranging from Elvis Presley's Hound Dog to Beyoncé's Say My Name, and Harry Styles' As It Was. The lawsuit, filed in a New York court on Monday, claims that this […]
Index funds are touted as one of the safest ways to invest. Rather than picking and choosing individual stocks, index funds let you bet on the market as a whole. So what happens when a company like SpaceX - a giant gamble, and, in my opinion, terribly overpriced - is fast-tracked into the Nasdaq-100? Does […]
The agency stressed that the July 17 voluntary recall from Taylor Farms still stands. The supplier has been linked to the ongoing cyclospora outbreak.
The one-year-old startup aims to reinvent financial architecture for autonomous AI transactions.
A judge partially granted the request from a dozen state attorneys general to temporarily place the $110 billion merger of Paramount and Warner Bros. Discovery on hold, as reported by Variety and Reuters. US District Judge Araceli Martínez-Olguín said that based on the new company's market share, "the Court is persuaded that it can presume […]
GitHub热门项目 | Self-hosted AI coding assistant | Stars: 33,768 | 13 stars today | 语言: Rust
It's Monday morning. You open your laptop. Coffee sits beside you. LinkedIn is open in one tab. A job portal is open in another. Your inbox is empty. Before lunch, you've already applied for five jobs. Tomorrow, you'll probably do it all again. This is why people say, "Finding a job is a full-time job." But once you're living it, you realize it isn't just a saying—it's a reality. Unlike a regular job, there's no salary, no weekends off, no annual leave, and no guarantee that today's effort will lead to tomorrow's opportunity. More Than Just Clicking "Apply" From the outside, job hunting looks simple. Upload a resume. Click Apply . Repeat. In reality, every application is a small project. The resume is tailored to match the job description. A cover letter is rewritten. LinkedIn is updated. The company is researched. Interview questions are reviewed. Sometimes a portfolio is improved before clicking Submit . What looks like a two-minute application often takes thirty minutes—or more. Multiply that by dozens of applications, and job hunting quickly becomes a full-time commitment. The Numbers Nobody Sees Fifty applications. Ten automated acknowledgements. Three interview invitations. One final-round rejection. And then... The cycle begins again. Many applications never receive a response. Some positions are filled internally. Others are paused, redefined, or quietly removed. From the candidate's perspective, every unanswered application feels the same—another day without clarity. The system doesn't tell you if you were close. It only tells you if you made it. _ Waiting Becomes Part of the Process After clicking Apply , another phase begins. Waiting becomes part of the routine. Refreshing email. Checking LinkedIn. Looking for missed calls. Hoping today's notification finally brings good news. A rejection can be disappointing. But uncertainty is often harder. At least a rejection provides an answer. Uncertainty leaves people creating their own. The Work Doesn't Stop After
A few weeks ago a Business Manager handed me a 50-page AI-generated technical spec. The document was impressive. The perspective behind it was the problem. I had talked to him a few days earlier about a new internal tool the company needed. We discussed the use case and the requirements in depth. Later on, I discussed those same requirements with my IT team and assigned them the job of making the technical specification. But before my team finished, the Business Manager handed me his own spec. A spec ready to be executed. The document was generated with AI assistance and it was impressive — fifty pages long, detailed feature breakdown, implementation timeline, cost projections. Everything looked professional. The AI had done exactly what it was asked to do. I read the whole document and noticed a problem. Not with the quality of the document but with the perspective that shaped it. The spec called for a manual Excel-based workflow with several manual steps and validations in-between. All seemed clean and manageable, matching the Business Manager's mental model of how that business workflow should work. When I checked the spec my team was working on using the same AI assistance tools, I noticed they had produced something completely different: automated data ingestion, real-time dashboards, API integrations with existing systems. Both specs addressed the same business need. Both were technically sound. Both could be built in roughly the same timeframe. But they were fundamentally different architectures, shaped by fundamentally different perspectives on how work should happen. The Business Manager's version was optimized for control and visibility — he could see every step, every piece of information and approve everything manually at any stage. The technical lead's version optimized for efficiency and scale — minimal manual intervention, automated error handling, designed to handle 10x the current volume without breaking. Neither person was wrong. But the AI amplifi
A first-of-its-kind analysis found more than one in eight apps built for US service members carried foreign code—some from firms in nations the Pentagon designates as adversaries.